-
Write something in the document below!
- There is at least one public document in every node in the Agora. Whatever you write in it will be integrated and made available for the next visitor to read and edit.
- Write to the Agora from social media.
-
Sign up as a full Agora user.
- As a full user you will be able to contribute your personal notes and resources directly to this knowledge commons. Some setup required :)
Welcome to [[boris mann]]'s section of the agora!
We're experimenting with [[Connecting to the Agora]], and what some of the configurations and conventions are. The [[Anagora]] page has my notes and feature requests.
Status
- This document was mostly written in 2018. The Agora was then just a thought experiment. It has since grown to be a living project.
- As late as 2020-10-17, the Agora barely existed as a concrete implementation -- it was not a single tool but rather many which you could use in tandem following a convention, which I provisionally named Agora Protocol.
- As of 2022-01-02, a reference Agora is online on https://anagora.org . Using terminology gained and derived in the last three years (with the help of the Agora community!), I can now describe it as a [[knowledge commons]].
Regardless of implementation details, an Agora can be assembled out of off-the-shelf parts available on the internet, mostly for free:
- Knowledge management tools used for the purpose of building a distributed knowledge graph, following the aforementioned convention based on lazily evaluated [[wikilinks]]. See https://anagora.org/agora-editor for a review of some of the tools in this space, or Roam Likes for an older take.
- Social networks and the constructive bits of the internet as we have them, annotated and enriched using open tools and standards.
- An explicit constructive social contract. For reference you can consult the anagora.org default.
If you are interested in collaborating on building Agoras or similar constructive spaces, please reach out or peruse the Git repository.
See also: https://flancia.org/go/agora-howto , https://threadreaderapp.com/thread/1322619094563258370.html.
Head
You can think of the Agora as a convention based social network; an optional, user-controlled annotation layer that can be applied over any internet platform which supports user-generated content.
I think one of the best possible uses for such a network would be to use it to pro-socially maintain a distributed knowledge graph tailored specifically to the goal of solving problems: those of its users and society at large.
Its users, as a cooperative group, could by default take a naive but rational approach to problem solving:
-
For each problem in the set P of all problems:
- Describe it as thoroughly as possible.
- Maintain a set of known or argued possible solutions, S(P).
-
For each solution in S(P):
- Describe it as thoroughly as possible.
- Maintain a set of resources (people, time, attention, money) needed to implement it, R(S).
Individual users could also declare their views on the state of the world explicitly: they define which subsets of P, S and R they agree with, in the sense that they believe they are feasible, true, interesting.
Users that agree on their defined subsets can then efficiently collaborate on solutions as they become available by pooling of resources.
We apply some good old recursivity and seed the Agora with the problem of how to build itself. That is, how to build a system that allows participating users and entities to collaborate optimally in the face of adversity (such as biases, irrationality and even actual ill intent)1.
The Agora should be built on a federated protocol to limit the harmfulness of diasporas. Groups might temporarily diverge in their views enough to want to run separate Agoras, but different Agoras should be able to cooperate on problems and solutions for which there is enough ideological alignment, and eventually merge.
Tail
I have a more focused and detailed unpublished document which will probably replace or complement this chapter soon.
I know the premise sounds almost like a joke: what the world needs is a new social network. The internet and social networks are technologies we are just barely learning to live with, and the recent cause of a lot of polarization and political escalation and Trump Being President2. It doesn't sound at first like we should add another stick to that particular dumpster fire. But hear me out.
We need a designated place in the internet where we can discuss ideas in a constructive way. In particular, where we can discuss possible strategies to face the problems that humanity is facing. This is already happening, for sure; but is it happening somewhere on the internet where everybody can contribute? I don't think so. If the Agora exists already, please point the way -- I'd like to get there, and building it from scratch would be hard. The network of universities and institutes are the closest we have and I love them, but the Agora should be fully open and available to all over the internet, so every participating individual can contribute work and thought. Of course the whole internet could be an Agora; but the internet as a whole is chaotic and disorganized and thus its implicit Agora is entangled with places that are not constructive and not safe. There must be a better way.
Nick Bostrom has a paper on existential risk where he talks about a kind of lottery of ideas; humanity is constantly playing this game, the metaphor goes, and drawing ideas out of big lottery wheels of Science and Technology and Culture. Some of the balls in this wheel are colored white; these are good ideas. They contribute to human good, and we're glad we found them.
There are also black balls, though. These are bad3. They are things that, on the whole, produce enough bad to be existential risks to humanity. Nuclear power seemed to be this for a while; perhaps mutually assured destruction could have resulted in an apocalypse. But it didn't! Aren't we lucky? If (and it's a big if) things stay this way, we got away with playing with something dangerous. Perhaps we can use the idea for whatever good it holds (cheap and relatively safe energy), or perhaps we decide to bury it underground in a big vault of ideas (this one doesn't have to ever spin again) that says Do Not Go There, Trust Us. For now, though, the idea might still turn out to be black; we could, perhaps, represent this situation as a grey ball of whatever shade we deem most likely.
We need a social network for discussing ideas. For talking about Bostrom's lottery urn, and what it has in it for us. In the Agora, we discuss ideas and their shades and merit; we discuss, first and foremost, ethics. We talk openly and clearly about how to best move forward as a society of humans, with the knowledge we've gotten and the resources we have.
What if social networks are grey? How dark is their shade? The high modernist in me wants to believe that the structured flow of information is more of a good thing than a bad thing. But we need to be cautious, and this is why I wrote this and you are reading it now.
I need your help.
In Flancia there is no poverty.
-
To start with, discussion in the Agora should follow the tried and tested Principle of Charity.↩
-
what if Twitter is already a decent Agora, and Trump just woke up to the fact that it's a superior meme transfer device sooner than others?↩
-
White = good and black = bad is in the original paper. Now, an apology: I don't like the fact that our culture encodes bad things as black, it's associated with death, etc. I think associating black with badness is a bit trite in a world that puts so much stock on being a particular kind of yellow.↩
Agora
-
A [[protocol]].
- #pull [[agora protocol]]
-
A [[platform]].
- #pull [[agora platform]]
-
A [[graph]].
- #pull [[agora graph]]
-
A [[commons]].
-
The Agora is a distributed knowledge graph and experimental social network.
- See [[go/agora slides]] if you'd like a 10' introduction to the key concepts.
- See [[go/agora doc]] if you are interested and have half an hour :)
-
The [[Agora]] you're likely reading this in, https://anagora.org , is designed to be just one of many.
- Anyone can run [[an Agora]] of their own if they so desire. This Agora is [[open source]]: [[go/agora]].
- To [[sign up]] for the Agora, which means volunteering your writing and media to it, please consult [[agora editor]].
- This Agora wants to be [[maximally inclusive]], but it is in its infancy; it is a [[work in progress]]. If you want to participate and can't, please also send email to signup@anagora.org to let us know.
- Through projects such as [[Agora bridge]], we hope to make this Agora available for writing to anyone that has access to a [[digital garden]] or a social media account.
- Follow an [[agora bot]] if you'd like to contribute to this Agora from [[social media]]:
- If you want to learn more about the [[experimental]] nature of this Agora, please refer to this Hacker News comment. If you want to keep up to date with development, consider adding me on Twitter or Mastodon: [[flancian]].
-
Agoras are spaces kept by communities with [[good intent]] while expressing explicit [[goals]] and open [[protocols]].
- This section, made up of items in a [[markdown]] list, is an example of an Agora protocol.
- This [[agora protocol]] is a set of simple conventions on top of [[plain text]] or other [[supported formats]].
- #pull [[agora howto]] [[an agora]] [[agora doc]]
- [[git]] https://github.com/flancian/agora
- [[bugs]] https://github.com/flancian/agora/issues
- [[bug]] https://github.com/flancian/agora/issues/new
- [[nutshell]] https://twitter.com/flancian/status/1487110385446576134
- [[architecture]] https://social.coop/@flancian/108346148663576473
-
The Agora is a distributed knowledge graph and experimental social network.
-
[[distributed knowledge graph]] & [[experimental social network]]
- [[social knowledge graph]]
- [[wiki]] [[wikilinks]]
- [[digital garden]]
An agora, in its broadest sense, is a conceptual space where people attempt to bring an increased level of intentionality, explicitness, and mutual agreement to the principles and protocols for interacting in that space. A further aspect of the idea of an Agora is that it is a space which enables collaboration. In particular, it is a space that allows for collaboration guided by specific shared interests, without requiring the co-consitutients of the agora to be aligned more fully or generally in terms of their intentions, values, etc.
Some topics that the idea of an Agora is related to: [[transparency]] [[decentralized structures]] [[egalitarian principles]] [[judgement]] [[algorithms of interaction]] [[communication]] [[collaboration]] [[knowledge sharing]]
There are (infinitely) many possible variants of how this idea might be implemented in concrete, real-world situations. For example, an agora could be a space that is opened up inside a conversation between two people. Or it could be a collaborative project that is accompanied by specified rules. Or it could be a collective agreement about how to handle certain types of situations.
One variant of the idea of an Agora is a place where personal notes are shared, with the common goal of pooling information and sharing knowledge. One implementation of this idea is https://anagora.org . See also https://flancia.org/go/agora .
The term "Agora" and the basic idea come from [[Flancia]].
img side { lapin 77 {My visual take}}
Agora is a ‘wiki like experimental social network and distributed knowledge graph’, so they said. I would say it's an aggregator of digital gardens and a community around it. Anagora is the first and biggest instance of it. [[Flancian]] was the one who created it and the software behind, but there were other good contributors. Thank you!
I'm part of it:. I also frequent the associated video conferences.
=> https://anagora.org/@melanocarpa | Melanocarpa in Agora => https://anagora.org/@bouncepaw-betula | My recent bookmarks in Agora
Agora makes a big emphasis on graphs and links. Their analogue of hyphae is called a node, nodes are generated from contents from multiple sites. There is also a cool notion of push/pull and go links!
//I was inspired by Agora's go links and implemented something very similar in [[Betula]].//
2022-01-18 I wrote the author an email about the possibilities of making Agora and [[Mycorrhiza]] compatible. 2022-03-06 Melanocarpa was added to Anagora, along with Mycorrhiza support. Furthermore, in 2023 proper support of [[Mycomarkup]] was added.
=> https://github.com/flancian/agora-server/commit/7783430aa33986186e9fd66ee858250b115e0d7e | Commit that adds Mycorrhiza support.
The Agorans also seem to be using [[git]]-based [[markdown]]-driven digital gardens mostly. It is the default choice for many, but luckily support for more formats was added. Mycorrhiza, for example, is supported! There is also [[Betula in Agora]].
= See also => Wiki => Social network => Digital garden => https://mycorrhiza.wiki/help/en/hypha => https://anagora.org/node => https://anagora.org/go => Flancia
You can't really talk about Agora without Flancia.
Agora
This looks like a really cool way of aggregating digital gardens into one place. To produce a community garden (or, an agora). Interesting to contrast with how a solely P2P way of connecting gardens might work, no central aggregator.
An Agora is a distributed, goal-oriented social network centered around a cooperatively built and maintained [[knowledge graph]]. The implementation you are currently looking at tries to assemble such a graph out of a collection of digital gardens.
See also [[sister sites]].
See: [[What do I think about the Agora?]]
Agora
The [https://anagora.org agora] is a cool place to learn stuff
[[agora todo]]
- [[agora containers]]
- [[agora ext]]
- [[agora-server]]
- [[agora ctzn]]
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
Agora 0.5.1
- Announcement: https://twitter.com/flancian/status/1327694477457289222 .
- Added notion of 'subnode': a particular note by a particular user. subnodes agregate up to 'nodes': nodes are the set of all subnodes about a given entity (by default, subnodes with the same title).
- Added users page.
- Nodes page now lists the size of the node (number of subnodes).
- Added subnode-viewing mode, in which you can see just notes (files actually) by a particular user (and link to them).
- Integrated one more garden, that of [[pen-coded]].
-
Previously:
- dev environment is now available (when up) at http://dev.anagora.org .
- Moved dev/prod to separate 'https://flancia.org/go/agora' and 'https://flancia.org/go/agora-server' repos.
agora 2022
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
-
#pull [[3 agora]] [[podagora]] unlocks:
- [[shamanic agora]]
- [[jerry agora]]
- [[anattagora]]
- ...
-
I try to write [[abstracts]] for possible [[papers]] related to the [[agora]].
- This was motivated by [[pkm book]]'s [[call for chapters]]
- #pull [[agora abstracts]]
- #0 in flancia there is an agora (perhaps to be read later)
- #1 the [[agora]] tries to be a minimal viable [[ethical]] [[knowledge commons]]
- #2 the [[agora]] is a platform that lets you do [[yoga]] for the [[mind]] with others
- #3 the [[agora]] is a platform for [[effective altruism]].
- #4 the [[agora]] is a repository of [[patterns]].
- #5 the [[agora]] is a platform for the the study of the [[phenomenology of reading and writing]]
- #6 the [[agora]] is a minimal viable [[social knowledge graph]] that tries to integrate and complement [[personal knowledge graphs]] optimally
Agora Action
- An Agora Action is any automated process that parses nodes and takes actions, either in behalf of a particular user or the whole [[agora]], based on their content.
- They are a good way to build [[agora integrations]].
- [[pull]] [[action]] [[agora actions]]
-
a [[list]].
- of actions supported by https://anagora.org .
- [[go]], which redirects to a canonical link
- [[pull]], which transcludes a target node or subnode into the current context.
- [[push]], which transcludes subordinate blogs to the target.
- [[annotate]] (alpha), which redirects to the via.hypothes.is link for a given resource.
- [[turtle]] (alpha), which returns RDF for a node.
-
[[receive]] (planned), which hints points of transclusion for [[push]].
- If you pull a node by mentioning this action in its vicinity, it gets 'upranked' in the context of the current node. In https://anagora.org , that means included. Example follows.
- [[pull]] [[push and pull]] [[planned actions]]
-
an [[agora feature]]
- The Agora can trigger actions in the context of a node when said node includes a block with a [[wikilink]] or [[hashtag]] representing an [[intent]]. Those intents include [[actions]].
- If you tell an [[agora]] about your intents in your notes, it will actuate them for you if it can. If it can't, it'll keep a record of the request and fulfill it once it's tractable.
- Some intents might be fulfilled transparently by humans.
https://twitter.com/flancian/status/1383438976283856900 https://twitter.com/flancian/status/1329890862499770368
-
in the [[agora]] we actions that trigger certain internal actions
-
list of common actions
-
I'm tempted to create a different action format because:
-
proposed alternatives
-
issues
- an agora can only support a finite list of actions so we need to configure them somewhere
-
#todo
- create config.yaml
- add actions to config yaml
-
a [[thing]].
- See [[go/agora server/git]] for implemented endpoints, in particular
app/agora.py
. -
Back here on [[2023-12-16]] thinking of [[markdown on git]] and what comes next.
- I think this has to do with the [[Fediverse]]: how to share it and integrate it together.
- And, more generally, with [[what we choose to do with the Internet]].
- See [[go/agora server/git]] for implemented endpoints, in particular
agora bootstrap
-
the agora runs in a user in your computer. I use
agora
.sudo adduser agora
sudo su - agora
.
-
you can optionally set up this user so it auto-starts all agora services you want to run.
sudo loginctl enable-linger agora
to have user services stick across restarts- then set up [[systemd]] user services for [[agora server]] (frontend/reader) and [[agora bridge]] (writer) in the
agora
user (more details to come soon)
-
[[clone repos]]
- agora:
git clone https://github.com/flancian/agora.git
- agora-server:
git clone https://github.com/flancian/agora-server.git
- agora-bridge:
git clone https://github.com/flancian/agora-server.git
- agora:
- LATER [[code]] [[bootstrap agora]] [[script]]
-
a [[bot]]
-
part of [[agora bridge]] component of the [[agora]].
- [[pull]] [[agora bridge]]
- in control of the [[system account]] in supported platforms.
-
interacts with existing networks, starting with Mastodon and Twitter.
- see [[agora social media integration]].
-
[[mastodon]] https://botsin.space/@agora
- see
bots/mastodon
in [[go/agora-bridge]].
- see
-
[[twitter]] https://twitter.com/an_agora
- see
bots/twitter
in [[go/agora-bridge]].
- see
-
[[matrix]] [[agora matrix bot]]
- see [[go/agora-matrix-bot]], [[mit license]] so separate repo while we figure that out (the [[agora]] is [[apache license]], [[flancia]] is [[creative commons]] plus an [[agora contract]].)
- [[functionality]]
-
a [[project]]
-
DONE reply to @mentions
-
DONE store [[matrix]] messages from [[agora discuss]] and other rooms that opt in?
--[2022-03-02 Wed 12:59:45] => 688:09:46
-
LATER reply to @mentions with resolved wikilinks for whole threads
-
-
part of [[agora bridge]] component of the [[agora]].
- now [[agora bot bugs]] tracks agora bot improvements known pending, will get to them shortly:
-
#push [[agora matrix bot]]
- fix responses to messages with more than one wikilink. this is a typical [[greedy regex]] mistake :) this bug is of course not in the agora
- make it respond by starting a new thread so it doesn't take up too much space
- make it work with wikilinks that have already been resolved, like [[vera]]'s
-
#push [[agora mastodon bot]]
- sometimes goes down, systemd journal doesn't show anything useful
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
Agora Bridge
-
A [[service]] run by the [[flancia collective]].
- [[git]] https://github.com/flancian/agora-bridge
-
Provides [[write]] functions into [[an agora]].
- It ingests content into the Agora from different sources: [[git]], [[fedwiki]], [[mastodon]], [[twitter]] as of [[2022-09-25]].
-
An [[integration hub]] that hosts [[bots]], [[clients]] and [[bridges]].
- [[siphons]] of [[public utility]].
- It tries to assist its users first and foremost; optionally it allows any [[agora]] to interact with [[social networks]], the [[fediverse]] and the internet at large -- always as is the intent of its users.
-
Bridges are configured with [[yaml]].
- The main configuration file for the service is [[bridges yaml]]; it can be passed to the service as a parameter.
- Bridges can be of type [[input]], [[output]] or [[bidirectional]] (r/w/rw).
-
A per user [[agora yaml]] can be volunteered -- as part of a [[digital garden]] if the user participates in an [[agora]] community). This file serves to configure an agora for the user. [[agora actions]] may then take place, including on demand rendering through [[agora server]] and running of [[agora actions]].
- Signing up to an [[agora]] involves pointing an [[agora bridge]], run by you or by a community, to your configuration file as published somewhere on the internet.
- Please join us in our matrix room if you have any questions.
- For developers, feel free to send a PR adding your garden! Or reach out in our development room.
- [[contains]]
[[done]]
- Got open source approval process.
- Experimented with [[toot cli]].
-
Create [[Mastodon]] account for prod.
- [[mastodon]] @agora@botsin.space
- set up api for @an_agora on [[twitter]].
[[doing]]
[[do]]
- [[]]
- implement [[agora yaml]]
- implement [[bridges yaml]]
- [[push]] [[agora bot]]
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
agora bridge api
-
[[agora bridge]] offers an api to write to the agora.
- pull the [[stoa]]
-
[[go]] https://gitlab.com/fedstoa/agora-bridge-js
-
asked [[vera]] how to run this, should add it to the readme:
-
install typescript:
npm install --global typscript
-
install... something:
npm i --save-dev @types/node
tsc app.ts && node app.js
-
install typescript:
-
asked [[vera]] how to run this, should add it to the readme:
agora channels
-
a [[list]].
- [[pull]] [[agora channel]]
- [[pull]] [[agora discuss]] [[agora development]] [[flancia collective]]
- #pull [[agora discuss]] [[agora development]] [[agora test]], all on [[matrix]]
-
a [[chapter]].
- #go https://docs.google.com/document/d/1DXJRDh9Ss5VCRBi3oirDw9d7yjn3H2hMqfN2ETTyjIc/edit
- #pull https://docs.google.com/document/d/e/2PACX-1vSYDn9CoWlS5MOtgdK4q2etAVDf_IXgDNJE8CKzQ73SGVmSDY5Vd0Azakw9s6ogR7LYADNxG2j-F9Na/pub?embedded=true
-
[[draft]]
- part of [[pkg book]] if I write it to a good standard before [[2022-09-01]] :)
-
or maybe [[2022-10-30]] ;)
- after great comments by [[editors]].
- See also [[agora pkg chapter]], [[agora doc]].
-
#meta [[agora doc]] is what will be the actual next deliverable
- this [[google doc]] has been used for editing rounds after [[2022-09-01]].
-
#push [[2023]]
- I'd like to set up sync back to the Agora ([[Markdown]]).
- Ask [[konstantint]]?
- Try to set up sync on the other direction using [[pandoc]]?
-
#comments from the [[editors]]
- finish first pass on [[2022-10-28]]
- second pass with a deadline of [[2022-12-04]]
- #push [[next action]]
Some loose notes about the process of writing/editing this follow, started on [[2022-10-27]] as I'm starting to go through editors' comments to try to get the chapter into a good enough shape to call it done.
First of all, it's super useful and informative (a learning experience) to have professional editors go through the document. Regardless of the outcome I'm glad I get to have this experience!
Second of all, I procrastinated a bit on starting to go through comments due to a pretty irrational sense of fear that the chapter was unreadable/unrepairable. I think it turns out there's plenty to be saved and repurposed for the final draft :) I'm also happy that I took some days off work, as it is indeed the time to dedicate real time to this project in a relatively uninterrupted way.
--
#meta I wonder if anagora.org supports rulers yet or I just dreamt it?
[[2022-11-06]]. [[Five minutes of rest]], so I write here :)
Loving [[termdown]] shaped into my simple [[pomodoro]] script.
Meditating every rest, at least three breaths (~33 seconds).
I got derailed trying to stream myself work in [[yoga with x]]. Having fun in the process, but I must not fool around now too much; I don't want the day to be derailed.
It is currently [[2022-11-06]] [[15:20]]. I'll now shoot for [[eight pomodoros]] on top of the four we've done so far :)
⸎
On it then. First pomodoro ticking, 15m to go.
[[Agora of Flancia]] ~ [[Flanciagora]]?
§
I'm happier with how the structure looks after eight pomodoros today :)
Now [[yoga with x]].
~
Thirteen pomodoros in, three to go. Having fun :)
Hmm, here we are again :)
This is now [[2022-11-28]]. The deadline for the next round of comments is [[2022-12-04]].
(This is my #drishti currently, meaning that I have set it to the number four, representing the date.)
I will now work on a different computer :)
If you somehow found this recording and you don't know what it's all about, you can check https://anagora.org/yoga-with-x and you'll find links to other recordings :)
-
#push [[todo]]
- Wow, I really need to maintain the Agora root repository. I haven't touched it in, well, maybe a year? I need to check. And it is the reason I keep thinking 'the Agora index doesn't read great.'
2023
Still working on this on [[2023-01-02]], enjoying it although I'm a bit delayed :)
My current attitude is: some bits of this are readable, if in need, chop what's not and publish what remains :)
[[2023-01-02]]
I plan to do 4 to 8 pomodoros on this tonight, although friends are coming over, so some of them might be later at night :) And I'm fine with 4.
Let's see how it goes though. It's 17:40 now, but the house is ready and dinner is simple.
[[2023-01-07]]
Back in this part of town! Starting pomodoros at 15. I hope to be able to finish this today. I'm primary oncall for Meet but oncall on weekends is usually quiet; let's see :)
-
a [[fork]].
- of [[Agora Chapter]] as it was on [[2023-01-22]].
- necessary because for some reason I couldn't attach a new [[Apps Script]] to [[Agora Chapter]].
- #go https://docs.google.com/document/d/12iOUaceyY58qR725HTq1E8nEdeRzWGqIQStenYf0IJk/edit#
- this copy does not have any linked wikilinks; meaning inside double square brackets there should be just text.
- #pull [[agora discuss]] [[agora development]]
- #pull Also for some reason Wikipedia returns [[Laiki agora]] for this query, which is awesome :)
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
Agora Cli
- The [[agora]] [[command line interface]].
- Currently very simple :) Example commands follow.
- [[pull]] [[cli]]
Agora Client
- Any client that runs on any platform that interacts with the [[Agora]] in some way.
-
As of [[2020-12-24]]:
- [[foam]]
- [[obsidian]]
- [[roam2agora]]
- Any tool that lets you produce [[markdown]] files, and [[git]] to host them. Most [[wikilinking-tools]] work in one way or another.
-
Planned:
- [[agora bridge]]
- [[hypothes.is]]
- [[web browsers]], via [[wikilinks everywhere]]
- [[pull]] [[agora editor]]
Agora Clients
- [[pull]] [[agora client]]
-
#pull [[agora server]] [[agora bridge]] contain the code for this Agora.
- [[go/agora/git]] is the Agora root.
Agora Comments
- #pull a [[knowledge commons]] as provisioned and maintained by an [[Agora]].
-
A container "platform" to run code in the [[agora]]
-
#todo
- implement container rpc control to communicate between [[agora]] and container
- think about security protocols for [[remote code execution]], sandbox etc
-
think about how to execute containers from the [[agora]]
- sandbox
- remote server
-
#todo
-
Possible Issues #issues
- currently [[agora]] is a flat file system, is there a way to represent file hierarchy?
agora convention
- [[pull]] [[agora protocol]]
- See [[stoa]] :)
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
-
Need to keep track of users we follow because currently the bridge only downloads the pages of people whom the user follows that is logged into the bridge
-
#todo
-
have [[rich text editor]] show preview mode on save
-
date issue because pages don't support the first character being a number
- use [[agora prefix]] in meantime for now
agora-prefix
- alternatively use a well defined prefix like
iso8601-
- use [[agora prefix]] in meantime for now
-
date issue because pages don't support the first character being a number
-
Done
-
add https functionality
-
put paths to certs in config file in prod
- /etc/letsencrypt/live/anagora.org/cert.pem
- /etc/letsencrypt/live/anagora.org/privkey.pem
-
put paths to certs in config file in prod
-
add https functionality
-
have [[rich text editor]] show preview mode on save
-
git clone project
- https://gitlab.com/fedstoa/agora-ctzn
- git@gitlab.com:fedstoa/agora-ctzn.git
-
run
npm install
to install deps -
copy
config.json.example
toconfig.json
and edit values -
run
sudo node app.js
ornode app.js
if you're logged in as the [[agora]] user
agora dashboard
-
I think we should build a cool loking [[agora dashboard]].
-
I've been procrastinating on [[agora monitoring]] and I think there are two reasons:
- I work as an SRE, so it feels too much like the [[day job]].
-
I've been procrastinating on [[agora monitoring]] and I think there are two reasons:
agora design
-
a [[design]]
-
[[go]] https://social.coop/web/statuses/105929339151612533
-
the [[agora]] has three parts:
- the [[agora]] proper, a high level description of an intent in the form of a [[contract]] and instructions contained in a git repository.
- [[agora server]]
- [[agora bridge]]
-
the [[agora]] has three parts:
-
[[go]] https://social.coop/web/statuses/105929339151612533
- [[pull]] [[agora]]
Agora Development
- A [[group]].
-
A [[stoa]].
- Heavily interacts with [[fedstoa]].
-
[[project]] [[agora]]
- [[project]] [[agora bridge]]
-
[[project]] [[agora protocol]]
- [[project]] [[wikilinks everywhere]]
- A [[matrix]] channel.
- See [[servers]].
- [[logs]]
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
agora discus
- [[pull]] [[agora discuss]]
- this could be an agora [[disc]] though I guess.
Agora Discuss
-
a [[room]].
- #chat #matrix
- #go https://matrix.to/#/#anagora:matrix.org
- [[discord servers]]
-
You can #push things here to make them known to the community :)
- You can always start by using the [[stoa]] below.
- [[logs]]
Agora discuss
- [[node club]]
Backlinks
- [[agora-discuss]]
Backlinks last generated 2022-01-28 07:55:20
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
-
a [[chapter]].
-
#push [[agora chapter]]
- written for [[pkg book]].
- #go https://docs.google.com/document/d/1DXJRDh9Ss5VCRBi3oirDw9d7yjn3H2hMqfN2ETTyjIc/edit?usp=sharing
- #pull [[agora pkg chapter]] ~ [[agora chapter]] (these might converge, I use them in different contexts)
- #pull https://docs.google.com/document/d/1DXJRDh9Ss5VCRBi3oirDw9d7yjn3H2hMqfN2ETTyjIc/edit#heading=h.lxyhsegwtr4m
-
the above should work, try iframes with [[google docs]]
-
it doesn't work :( "Google Docs benötigt Zugriff"
-
oh, but you can click on "click here" to get through!
- only on Firefox
- it doesn't work at all on Chrome :(
-
oh, but you can click on "click here" to get through!
-
it doesn't work :( "Google Docs benötigt Zugriff"
-
#comment https://docs.google.com/document/d/1DXJRDh9Ss5VCRBi3oirDw9d7yjn3H2hMqfN2ETTyjIc/edit?disco=AAAAhUbCJIQ
- great top level comment by [[ivo]], see push here for summary (G1-G8).
-
#push [[agora chapter]]
-
a [[feature]].
- in... [[agora bridge]]?
- #go https://developers.google.com/docs/api/samples/extract-text#python
- [[do]] want to implement it using the above as a start
- will support only public documents to begin with
Agora Editor
-
To contribute to the [[Agora]], you need to write down notes or posts in one of the [[supported formats]] and upload your notes to a git repository of your choice. These steps are expanded below.
-
Get a [[github]] account if you don't have a git host already: https://github.com.
- Install [[git]] if needed: https://git-scm.com/download. It should be installed by default in [[linux]], comes bundled with [[mac os]].
- See [[agora signup]] for more details on the process.
-
Get a [[github]] account if you don't have a git host already: https://github.com.
-
In a nutshell: you need to host your notes (more generally, [[resources]], defaulting to [[markdown]] plus [[wikilinks]]), somewhere online. And then let the [[agora]] know about it.
- The Agora doesn't host your data, but rather pulls it from a location you control and renders it for you and other users; in the process interlinking your data with that of other users.
- Most users currently host [[git]] repositories on https://github.com or https://gitlab.com.
- Note using the default format (Markdown) lets you also easily publish your [[blog]] or [[digital garden]] independently online with tools such as [[jekyll]], [[gatsby]] or [[nikola]].
-
As of [[2021-05-07]], the recommended Agora editor is:
- [[foam]], if you want open source hosted locally.
- [[logseq]], if you want open source, value the convenience of a hosted setup, and use [[chrome]] or a [[chromium based browser]] (any browser but [[firefox]], essentially).
-
[[obsidian]] if you don't mind using closed software from a small ethical company, in particular a small one with a vibrant open source extension community.
- You need at least also the [[obsidian git]] plugin. See [[obsidian plugins]] for more.
- [[install obsidian]] by visiting https://obsidian.md and then follow [[vault backup]] to set up backup to [[git]]: https://docs.github.com/en/github/importing-your-projects-to-github/adding-an-existing-project-to-github-using-the-command-line .
- Then follow the procedure below to add your vault or [[digital garden]] to the [[agora]].
- You can also use:
-
After getting yourself a [[repository]], you need to let an [[agora]] know about it so it can be pulled and integrated.
- Please send a [[pr]] adding your garden to [[gardens yaml]], accepting the agora's [[contract]] and indicating your desired username; or reach out to signup@anagora.org, [[flancian]] or [[vera]] with information about your use case. We'll do our best to make it work! We want the [[agora]] to be maximally inclusive.
-
All [[agora]] users must agree to its [[contract]] as defined by the system account.
- The contracts of other users can optionally be a [[endorsed]].
-
My proposal to you now is that we use the capability of sharing and discovering context-relevant media at effectively zero cost for the greater good: let's agree on a protocol to escape [[vendor lock-in]] and cooperate optimally on projects of [[public utility]].
- [[agora protocol]]
Agora Editors
- [[pull]] [[agora editor]]
-
a [[proposal]]
- proposal: name this [[agora]] [[elinor ostrom]].
- [[mastodon]] https://social.coop/web/statuses/106228674151737915
- [[twitter]]
agora embed
<div class="stoa-public">
<span class="subnode-header">[[agora]] at anagora.org</span>
<iframe name="embed_readwrite" src="https://anagora.org/agora" <button class="pull-url" value="https://anagora.org/agora"">pull</button> width="100%" height="500" frameborder="0"></iframe>
</div>
or just the iframe if you want to embed out-of-agora of course :)
-
the other leg of [[agora protocol]]
- the agora wants to support a variety of storage formats that facilitate exchange between [[tools for thought]]
- [[hypothesis]] https://hyp.is/i3iUMtOSEeudHIML10vbwQ/iannotate.org/2021/program.html
-
#push [[wikilinks everywhere]]
-
a [[browser extension]]
- it makes [[wikilinks]] clickable on your browser on arbitrary websites... sometimes :)
- by [[vera]], [[evan boehs]], [[flancia collective]].
- [[firefox]] https://addons.mozilla.org/en-US/firefox/addon/agora/
- [[chrome]] https://chrome.google.com/webstore/detail/agora/joalfhedjllnlphmdbegppmhchhmlddc
- we had a bit of a confusion at some point and we ended up with two different repos, or maybe three :)
-
a [[browser extension]]
I realize that while this site is connected into [[Anagora]] (but that’s an instance, so I should be saying [[Agora]] instead?) that I don’t really know how it works! Or what the special features are!
What markup do I use to link to a “global” node? A particular user’s node?
For instance, this post will be imported there, under “my” node. How does someone, while writing in their agora, link to [[Agora FAQ]]?
Ideally I don’t want to have to break my flow and go look up a link. So, within some bounds of acceptable markup across different agora engines and their plain text representation in Git, what should this look like?
What Markdown features are supported? What non-Markdown features do I need to know about?
Footnotes are not (currently) supported. See my [[Goggles]] node in the agora for footnote examples.
What engines are supported? What engines do people currently run?
Anything whose source is Markdown pages in Git can be imported.
- [[Jekyll]]: @bmann
This is clearly a collaborative doc that should probably be an EtherPad linked to the Agora FAQ page
- #pull [[agora]] [[frequently asked questions]] [[agora faqs]] [[open agora questions]]
Agora Feature Requests
- [[pull]] [[feature requests]]
- automatically pull nodes mentioned in the current node
- auto [[go link]] a url found in a node
- [ ]
- [[pull]] [[agora bridge]]
-
[[push]] [[agora social media integration]]
- you can use the [[agora]] protocol on any social media platform and express your intent to interact with the [[agora]] by communicating to one with one of our [[service accounts]] and the [[agora]] will try to integrate your content in whichever way you want, only for as long as you want to.
- [[vera]] has picked this up! [[twitter bridge]]
Agora Feeds
-
a [[feature]].
-
#push [[agora plan]]
-
The [[agora]] should support [[rss]] / [[atom]] feeds in two ways:
-
As a [[consumer]], to easily allow any feed producer to volunteer subnodes in an [[agora]].
- I see this as part of the [[agora bridge]] effort.
-
As a [[producer]], to easily allow users and other systems to consume [[agora]] updates.
-
As of [[2022]] this exists:
- /feed/node gives you a feed of subnodes in node.
- /feed/latest gives you an Agora wide feed.
- You can join #go https://matrix.to/#/#agora-feeds:matrix.org on matrix if you want to keep track of updates in a chat room.
-
As of [[2022]] this exists:
-
As a [[consumer]], to easily allow any feed producer to volunteer subnodes in an [[agora]].
-
The [[agora]] should support [[rss]] / [[atom]] feeds in two ways:
-
#push [[python]] libraries
- most popular: [[feedparser]]
- new contender: [[atoma]]
-
#push [[agora plan]]
Agora for EA
-
a [[conference]].
- #go https://agoraforum.ch/en/home/
- [[2021]] [[switzerland]]
Agora Fuzzy Matching
-
The Agora will make use of [[fuzzy matching]] to maximize the chances to surface relevant content.
- Perhaps using [[levenshtein distance]]?
- Some library?
-
All of the following should be surfaced in unison whenever one of them is surfaced, likely:
- [[wikilink]]
- [[wikilinks]]
- [[wikilinked]]
-
There should be some support for [[acronym]]s as well:
- [[united states]]
- [[US]]
- [[U S]]
- And perhaps, going further, [[united states of america]] should be consolidated with the preceding as well.
- [[ranking]] Perhaps fuzzy matched content is ranked lower than perfectly matched?
Agora FW
- Stoa
Agora Go Links Integration
-
I have implemented this: when in an Agora subnode there is a block that begins with [[go]] and continues with a URL, the Agora will set up a [[go link]] with it and make it available at anagora.org/go/ + the node id. Example follows.
- [[go]] flancia.org/mine/go-links
- Because of the above block, if you visit anagora.org/go/agora-go-links-integration you'll be redirected to an article of mine on go links in flancia.org.
- This was implemented on [[2020-11-21]] in [[Agora plan]].
- Note currently I also run go links on https://flancia.org , my personal domain, and they're incomplete (they contain a subset of the go links in the Agora).
-
Next up: handle the case in which several subnodes set up different go links.
- Behaviour now: one is picked opaquely; the username with the username that comes first alphabetically "wins".
- Expected behaviour: perhaps a list with all targets shows up, and then five seconds later the Agora redirects to the most highly ranked target (to begin with, the oldest?).
- My objective is to build a governance system into the [[agora]]
- proposals will be submitted as nodes
- people respond to proposals by creating a node with the same name as the proposal, any #tags will be counted as a vote
- I want to add a
/proposal
route to the [[agora]] to have a special proposal view for governance
-
a [[thing]].
- [[distributed knowledge graph]].
- The brain of an [[Agora commons]].
- See [[agora doc]].
-
a [[project]].
- I want to graph both the Agora as a whole and the context of a node in the agora, as per [[agora ui]].
- local graphs: done (partial implementation).
-
global graph: running in dev but very resource intensive, may need to refactor/redo.
-
it could be cool to get a graph in [[agora doc]] though...
-
could be nice to do this through [[runnable subnodes]]:
- [[javascript subnodes]]
- [[python subnodes]]
-
could be nice to do this through [[runnable subnodes]]:
- did [[rdf]] first: exposed rdf for the agora and use something like [[rdf grapher]] to graph
-
it could be cool to get a graph in [[agora doc]] though...
- #go https://twitter.com/flancian/status/1380210191837315073
- idea that I had to use the agora like a social group
- pick a name e.g. [[leftist memes]] and then post comments/memes
- makes me wonder what multi posting to a term looks like. could we have a "feed" of content for nodes
- maybe "feed" content type
Agora Help
- An Agora is a [[distributed knowledge graph]] made up of notes, images, files, links.
- An Agora is built and maintained by a community according to its base [[CONTRACT]].
- Agora nodes are identified by their [[wikilink]]. [[wikilink]]s may resolve to more than one piece of content; this is not only fine, but considered desirable.
- Agora users volunteer content for nodes. Content is shown at that node, sequentially, according to a community maintained [[ranking algorithm]].
- What you're reading currently is a node like any other. If you contributed to this Agora, you could write and submit a note titled 'Agora Help' of your own and it would be shown in this location together with this one.
-
If you would like to contribute to the Agora, there are two ways you can do that:
- You can start taking notes, or assembling a [[digital garden]], and contribute them to the Agora. For more information on how to do this, please refer to the Agora Howto.
- You can help develop the Agora; the Agora is open source and community driven. For more information on how to do this, please refer to README
- Please see [[agora editor]] if you'd like to participate.
Agora Howto
-
To join an Agora:
- [[pull]] [[agora signup]]
-
To run an Agora:
- [[pull]] [[agora install]]
Agora Hub
- The [[Agora]] is a bit about integrating the best out there, in a sense; that's what I believe could be a competitive advantage of open source.
- Companies are usually motivated not to cooperate with others, because they want an edge in the market. This forces them to close down, and it means every company needs to implement a lot of the same stuff independently. It's so inefficient.
- Open source can be fully open because it has open intentions. Every platform is open by default to collaboration, because openness is symmetric, and integrating with a product usually means users get something of value out of it for no recurring costs.
- n products or open platforms will tend to integrate, presumably, if they see value in it exceeding integration costs. The issue is that integrations themselves can be seen as costly, because they are by default a full graph, which has n! directed edges.
- The Agora is an attempt to work around this by clearly defining a neutral ground for willing parties to cooperate in. This common ground can then be used to build a hub. A hub is a highly connected node. In the previous graph of n, if all nodes trust hub h, complexity of integration drops to n.
- See also: [[Agora]], [[Agora Plan]], [[Agora Protocol]].
- [[go]] https://twitter.com/flancian/status/1330205461732323329
Agora Hypothesis
-
a [[group]].
- [[go]] https://hypothes.is/groups/XMWwMJoe/agora
- If you want to see all [[hypothes.is]] integrations in anagora.org:
- [[pull]] https://hypothes.is/search?q=url:anagora.org/*
Agora Hypothesis Integration
- Interesting I didn't have this node until [[2020-12-12]].
-
[[hypothes.is]] could be a great platform to implement [[agora comments]].
- Trivially: each node could redirect to a via.hypothes.is URL for commenting inline.
-
[[hypothes.is]] could be an [[agora client]]:
- an interface to query your notes and [[Agora]] nodes in an Agora of your choice.
- an interface for [[wikilinks everywhere]].
- [[do]] try embedding hypothesis in the Agora: https://web.hypothes.is/for-publishers/#embedding
- [[pull]] [[agora hypothesis]]
Agora Install
-
a [[howto]].
- These are instructions to [[run your own agora]]. If you are looking for instructions on how to join this Agora, please refer to: [[agora signup]], [[agora editor]].
Before you get started
As of the time of writing the [[Agora]] consists of three distinct repositories:
-
The Agora proper, which contains the root of a tree plus instructions on how to grow it. This is defined by its configuration and its [[contract]].
- -> [[go/agora]]
-
The [[Agora Server]], a web interface to the Agora, mostly [[read only]]. It is the interface you're reading this in if you're in anagora.org.
- -> [[go/agora-server]]
-
[[Agora Bridge]], a repository that contains various means of writing to the Agora and more generally interfacing with it. This includes the process that interacts with the Agora's configuration (in the first repository in the list) and runs fetch/update tasks; and a set of platform-specific bots.
- -> [[go/agora-bridge]]
The following instructions assume you clone all repositories and run all services under the same user in a Unix-like system (anagora.org
runs on Debian GNU/Linux). We suggest agora
:
$ adduser agora # follow prompts
$ sudo su - agora
To get all repositories:
$ git clone https://github.com/flancian/agora.git
$ git clone https://github.com/flancian/agora-server.git
$ git clone https://github.com/flancian/agora-bridge.git
You need to clone all three to run a fully functioning Agora. Because the first is configuration only, and the third encapsulates all mutating code, you technically only need to run [[agora server]] as a service to run an immutable Agora. These instructions assume you set up all three in order.
Agora
-
gardens.yaml
contains the list of sources for this Agora.- may be renamed
sources.yaml
- (if the agora is a filesystem, this is the [[fstab]])
- [[gardens yaml]]
- may be renamed
CONTRACT.md
contains the Agora system account's public commitment to the ecosystem.
You need to edit gardens.yaml
if you want to carry a different set of sources. The Agora comes with defaults.
If you edit the [[CONTRACT]], your Agora might become incompatible with the Agora you forked from. Conflict resolution is part of [[agora protocol]] but currently not specified.
[[Agora Server]]
- [[python]] backend, [[flask]] based.
- [[typescript]] frontend, no framework for now.
If you installed in non-standard paths (i.e. your repos are not in /home/<user>/<repo>
), edit app/config.py
.
You need to create a Python virtual environment, install packages from requirements.txt
. run ./setup.sh
and it'll at least try to point you in the right direction :)
You can then ./run-dev.sh
(for development) or ./run-prod.sh
(if you want to serve to the outside world). If you do the latter, you may want to set up [[uwsgi]] in [[nginx]] and make it stick as a [[systemd service]] using agora-server.service
as an example. Please refer to https://github.com/flancian/agora-server#to-develop for details.
You can add an nginx virtual host with [[certbot]]: certbot --nginx -d example.anagora.org
. Then use the following as an example to forward traffic in that virtual host to Agora Server over UWSGI:
location / {
include uwsgi_params;
# /home/agora/agora-server/run-prod.sh to run.
uwsgi_pass unix:/tmp/agora-uwsgi.sock;
}
Agora Bridge
-
[[python]]
- [[gardens py]]
-
[[yaml]]
- [[gardens yaml]]
- [[agora bot yaml]]
- [[typescript]]
You need to create a Python virtual environment, install packages from
requirements.txt
. run./setup.sh
and it'll at least try to point you in the right direction :)
Then run ./run-prod.sh
either on a shell or as a [[systemd service]]. This will pull from all sources in the root repository's gardens.yaml
in a loop.
You can also optionally run a number of bots that will interact with people in supported platforms. See the bots
directory and https://github.com/flancian/agora-bridge#install for more.
And now?
Now that you have a functioning Agora, consider what you will do with it.
Please consider [[agora protocol]], [[contract]] and [[goals]]. Reach out if you are interested in establishing other protocols for [[collaboration]].
A note on Docker support
There is currently no [[docker]] support, but it seems like it could be a great fit. We have this in our plan, but if you're handy with Docker, this would be a great contribution for you! :)
-
#push [[other agoras]]
-
explicitly defined as such:
- [[agora of flancia]] ~ https://anagora.org
- [[shamanic agora]] being built
- [[ogm agora]] currently having the form of [[open global mind]]'s [[mattermost]]
- [[social.coop agora]] being considered (at least by me!)
-
implicitly, aligning in values
- other listed in [[other agoras]] and such
-
explicitly defined as such:
Agora Integration
- Agora integrations might be gateways to other services that allow the [[Agora]] to interop with them; usually mapping to [[actions]].
- See [[agora plan]] and [[agora feature requests]] for a list of planned integrations.
-
These are instructions on how to add your [[digital-garden]] to the highly experimental interlay version of the [[agora]]
-
If you have any questions feel free to contact me
- #email veronika.m.winters@gmail.com
- #twitter @flanciavera
- #matrix vera@fairydust.space
- I'll be happy to add you manually on request
-
If you have any questions feel free to contact me
-
Fork our repo on github https://github.com/flancia-coop/agora
-
clone your repo
git clone <url to your fork>
-
cd into repo
cd agora
-
import your own repo as a submodule
git submodule add <url to your repo> <your desired name>
-
add files to index
git add .
-
create commit
git commit -m "submodule"
-
push changes back to your fork
git push origin master
-
create pull request
agora js
Agora Like
- #pull [[fedwiki]] [[federated wiki]]
- #pull [[mycorrhiza]] [[betula]]
- #pull [[massive wiki]]
- #pull [[Yubnub]] is a general purpose keyword-based social redirector which incorporates some of the same community shaped aspects that drive the Agora, in particular Agora Actions like Go. The Agora of Flancia redirects queries to Yubnub for some prefixes.
- #pull [[Cosma]] “is a document graph visualization tool. It renders interlinked plain text files as an interactive network in a web interface.”
- #pull [[solid]]
- #pull [[codex editor]]
- #pull [[roamanpub]] [[roaman agora]]
- #pull [[pubpub]]
Agora Links
- flancia.org/agora/go_link
- Could be built on top of generated nginx redirect configurations. Sounds easy and potentially actually fast.
- [[Turing]] and [[Lovelace]] are patron scientists of the Agora (?). [[Hypatia]] might be patron philosopher.
-
a [[bot]].
- in [[agora bridge]].
- #pull [[agora mastodon integration]] [[agora bot mastodon]]
Agora Mastodon Integration
- [[pull]] [[agora fediverse integration]]
- [[metasj]] There's no RC for cat membership, but https://www.mediawiki.org/wiki/API:Categorymembers returns a full current list, and for incremental updates https://www.mediawiki.org/wiki/API:Usercontribs with ucshow=new returns new pages created by a user.
- [[metasj]] The only schema would be (extracting local agora name from mw page-title prefix). Other processing: Link extraction would be looking at each wikilink on the MW page and a) converting to an agora link if the target is also a [[category:agora]] page, b) interpreting other [[localname:title]] links or [https://url external links] as agora links if the target agora is known (and the localname: is not also the name of a local MW namespace)
Related MW plugin: "cascading wikilinks" -- a patch to the link-generator JS widget, which currently automatically generates the proper MW markdown for an external URL or a local wikipage, that a) recognizes a cascading list of agoras. So I can write "flancia:agora", link it, press enter, and have it resolve b) option: automatically adds a footnote w/ a "see also: [[article]]" when there's an entry in a Wikimedia-namespace w/ the same term.
-
a [[meet]].
- we have [[flancia meet]] on Saturday mornings (UTC), [[agora meet]] would probably ideally take place some day in the afternoon (UTC) so it can be more easily attended by people west?
- Update (2022-08-21): first instance happening on a Sunday morning.
- #go https://meet.jit.si/agora-meet
[[2022-08-21]]
- See [[stoa]] below.
Agora Meet
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
[[Feature request]]
The [[Agora]] already has [[action]]s that indicate [[transclusion]] (with directions) through push
and push
. We should also have [[action]]s to indicate garden-side [[node]] [[aliasing]].
Node aliasing is useful for allowing an user to deviate from conventions about node naming, while still maintaining [[wikilink]]s as [[first-class citizen]]s.
Possible syntaxes
We should have multiple conventions:
Inline:
-
tag action:
#alias [[node]]
-
link action:
[[alias]] [[node]]
-
list:
- [[alias]] - [[node]] - [[page]] - [[entry]] - [[thread]] - #alias - [[nickname]] - [[pseudonym]] - [[aka]] - [[also known as]]
-
[[@flancian]]:
[[node]] == [[node]]
Front matter/Global files
-
Markdown front matter:
agora-alias: node
-
HTML data attribute:
data-agora-alias='node'
-
(in the future) [[agora garden yaml file]]:
agora-alias: - node: - page - entry - thread - alias: - nickname - pseudonym - aka - also known as
- https://github.com/obsidianmd/obsidian-sample-plugin
-
MVP
- detect nodes in the [[agora]] and display that in obsidian somehow
- The [[Agora of Flancia]] is just [[an Agora]].
- #pull There are [[many Agoras]]; I'm writing this in the [[Agora]] of [[Flancia]].
-
an [[agora]].
- This [[Agora]], https://anagora.org , is an [[Agora of Flancia]].
-
This means:
- It counts as its goals to get all willing parties closer to [[Flancia]] [[non-violently]].
-
It contains a free [[knowledge commons]].
-
It contains a repository of [[patterns]] for [[world improvement]].
- It is a [[platform]] for practicing [[loving kindness]] and [[fractal altruism]].
- It is a [[device]] for exploring social reform [[experiments]] like [[basic income]] and [[liquid democracy]].
-
It contains a repository of [[patterns]] for [[world improvement]].
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
agora osm
-
an [[integration]].
- it'd be nice to integrate [[open street map]] with the [[agora]], and the other way around.
agora outage
-
the [[agora]] went down significantly today (at least 10 minutes) for the first time I'm aware of since at least the beginning of the year.
- I've procrastinated on implementing best practices so there's plenty to analyze in this postmortem! I'm looking forward to it.
- [[you can run an agora in your laptop]]
-
a [[paper]].
- I'm trying to write (as of [[2022-07]].)
- As part of the contribution I'm trying to put together for the [[pkg book]].
- #pull [[agora pkg chapter]] [[agora slides]]
-
#push [[todo]]
- [[write]], this is a top priority in [[august 2022]].
- this should probably show up at the top of [[todo]] and not at the bottom!
Meta
By default, this paper will be built around the following:
- The [[Abstract]] below, taken from a snapshot of the above on [[2022-08-05]].
-
#pull [[agora pkm chapter]] with greater technicality?
-
Define [[m]], [[m prime]], morphisms.
- (An Agora as a category?)
-
Define [[Agora Protocol]] operations.
- [[print]]
- [[broadcast]]
- [[share]]
- [[assert]] ~ [[m]]
- [[intent]] ~ [[m prime]]
-
[[delegate]]
- -> [[liquid democracy]]
- [[pull]] (a [[node]], as transcluding, incorporating a [[pattern]].)
- [[push]] (a [[node]]), as if meaning publishing to a [[topic]].)
- [[go]] (to a [[node]], or [[URL]].)
- [[fork]] ([[a commons]].)
- [[merge]] ([[n commons]].)
-
Define [[m]], [[m prime]], morphisms.
- #pull [[a pattern language]]
- #pull [[a rosetta stone]]
- #pull [[i am a strange loop]]
Abstract
In this [[paper]] we describe an Agora, a [[social knowledge graph]] provisioned and maintained by a self-governing community as a commons.
The Agora [[knowledge graph]] can be defined as a hypergraph A
with a set of k
nodes N
(entities an Agora knows about) integrated out of subnodes SN_0 .. SN_k
containing subedges SE_0 .. SE_k
, aggregating into edges E_0 .. E_k
(semantic links between entities inferred out of known subnodes). Edges are annotated implicitly by link context and explicitly via the use of [[agora protocol]], which is extensible and tries to build on existing conventions in the [[personal knowledge management]] space.
An Agora differs from other projects in the personal knowledge space in a few ways: whereas a personal knowledge graph usually contains resources authored or collected by a single person, and a wiki usually contains resources produced by a group, an Agora contains, integrates and interlinks both personal and group resources. Whereas links in a personal knowledge graph or wiki usually have a single target, Agora links fan out by default and can be thought of as mapping to sets of resources. This is consistent with the general design principle of facilitating storage and retrieval of entity-mapped information towards removing friction from cooperation.
Building on the general principles above and a [[free software]]1 reference implementation of the underlying protocols and data, we model and detail how to implement a distributed system that provisions social knowledge services ethically and sustainably, upholding [[data sovereignty]] principles. We then analyze some of the potential applications of such a system. Finally, we shortly explore future work and social implications assuming that the Agora is run as a [[confederated]] system for the [[public good]].
Introduction
As per [[agora pkm chapter]] by default?
Background
- #pull [[a pattern language]]
- #pull [[a rosetta stone]]
- #pull [[the expanding circle]]
-
The provided [[reference Agora]] tries to remain tool, format and platform agnostic, building on general conventions common to many tools and platforms in the knowledge space for ease of integration and maximal inclusivity2 and diversity3. ↩
- To participate actively in the Agora is to write explicitly for the Agora. It is as easy as mentioning it, or otherwise using the concept in your digital garden.
-
a [[paper]].
- As of [[2022-08-30]] the source of truth for this has moved to the Google Doc: [[go/agora doc]] ~ https://docs.google.com/document/d/1DXJRDh9Ss5VCRBi3oirDw9d7yjn3H2hMqfN2ETTyjIc/edit
-
#push As of [[2022-07-24]] being produced as the draft for a [[pkg book]] [[chapter]].
- Very much looking forward to the book because of others' contributions!
- See other chapters in https://personalknowledgegraphs.com/#/page/Personal%20Knowledge%20Graphs.
-
This chapter is about the [[Agora]] in general, and about [[an agora]] in particular, and what we could do with them together.
- Working title: "The Agora is a Distributed Knowledge Graph and Protocol".
- Working title (2): "The Agora is a Protocol, a Platform and a Commons".
- Subtitle: Experiments with a [[Distributed Knowledge Graph]].
- Original title (for the abstract): "The Agora is a Social Knowledge Graph".
- Expected length: 5k-10k words ~ 10-20 A4 pages single spaced.
-
#push [[deadlines]]
- [[outline]] July 1: A list of bullets with the sections the chapter will consist of.
- [[draft]] August 1: A first draft of the chapter, minimum of 2,000 words.
- [[submission]] [[September 1]] ~ [[2022-09-01]]: The final chapter submission after which it goes into editing.
-
#meta The preceding blocks and the following [[children]] exemplify [[Agora Protocol]] (see below for a concise description.)
- This document as a whole tries to be an example of Agora Protocol as used interspersed, and occassionally intertwined, with common prose.
-
#push [[altruism]]
- #pull [[effective altruism]] [[peter singer]]
-
#push [[revolution]]
- #pull [[free software]] [[federation]] [[adversarial interoperability]] [[murray bookchin]]
-
In this subnode (meaning this text file) you will find the actual chapter text, including the introduction, which should be 5k-10k words once ready to be delivered on [[2022-09-01]].
- In the subnode below (meaning another text file, sourced from the [[Stoa]]), you will find a snapshot of the chapter outline as it was when I delivered it to editors on [[2022-07-04]] as a list of bullets. This is now an independent version, writable by any interested party; feel free to edit it in whichever direction you want to take it and use it to show what you think the [[Agora]] is about, or should be.
-
[[todo]] (see also lines below marked TODO)
-
#pull [[agora]]
- see if there's any phrasing there that can be reused here, this has drifted towards the technical and [[agora]] might have some nuggets?
- rewrite/rethink sections for [[agora platform]] and [[agora commons]] (triad approach with [[agora protocol]]?).
-
[[agora protocol]]
- mention [[pull]], [[push]], [[go]] in RFC section?
- maybe link to [[feature requests]]
-
[[agora platform]]
- add about [[opt in]] policy
- add [[user data ownership]] model (repo per user to bootstrap)
-
document [[endpoints]] in [[Technical specifications]]
- including /feed/
-
[[agora commons]]
- add more on [[pattern repository]] aspect
- document social -> agora and agora -> social flows
-
what about importing single resources like docs?
- I actually need this for this document, the following should work?
- #pull https://docs.google.com/document/d/1DXJRDh9Ss5VCRBi3oirDw9d7yjn3H2hMqfN2ETTyjIc/edit
-
#pull [[agora]]
Introduction
In this [[chapter]] we describe the [[Agora]], a [[protocol]] and reference [[platform]] yielding a [[knowledge commons]] provisioned by a self-governing community. This commons is bootstrapped as a [[distributed knowledge graph]] assembled from off-the-shelf components, upholding the user's [[data sovereignty]] while supporting integration with a wide range of [[tools for thought]].
The Agora as described in this article is just [[an Agora]], meaning it should be taken as a simple [[reference implementation]] of the principles delineated in this paper. Because the Agora-defining [[Agora protocol]] tries to build on common principles1 and incorporate conventions already in use at the time of writing, you will likely find that other Agoras already exist online and offline -- if not by name, then definitely in values and direction. When in doubt, the author2 likes to assume that all Agora-like entities we find will eventually be part of a greater [[confederated]] [[Agora network]]. Put another way, the reference Agora described here is just one possible seed from which an [[Agora network]] may grow.
A core aspect of the provided [[reference Agora]]3 is that its constituent [[distributed knowledge graph]] can be straightforwardly bootstrapped using just a well-defined freely-available subset of the [[internet]]. The provided software can already integrate crowdsourced sets of [[personal knowledge graphs]], [[digital gardens]], [[wikis]] and [[feeds]] of all kinds (including social), generalizing to arbitrary repositories maintained manually or via readily available [[tools for thought]] (both open and closed in nature). All supported data sources are retrieved and integrated using [[free software]], while still supporting production and editing with arbitrary tools of the users' choice.
As hinted above, the Agora is a project with multiple facets which we will try to explore in order in this paper:
- The high level [[Agora protocol]], which is designed to lower friction to information exchange and cooperation, mostly building on [[conventions]] and [[devices]] already in use within knowledge oriented [[communities of practice]] and supported by a variety of [[tools for thought]].
- A [[free software]] [[reference implementation]] of an [[Agora platform]] based on the principles delineated in this article, including: a set of importers for diverse [[data sources]] and [[formats]]; an API with [[endpoints]] implementing the [[Agora protocol]]; and an integration layer serving as user interface to the [[knowledge graph]].
- An example [[Agora commons]], being a [[distributed knowledge graph]] provisioned by an [[Agora community]] using the tools and concepts above.
The triad above fits together in a variety of ways that we will try to explore in relevant sections, but in a nutshell: [[Agora protocol]] can be used by the community while interacting with the [[Agora platform]] to provision entities, intents and services in the [[Agora commons]].
We2 then cover experiments and potential applications in the [[academic]], [[social]] and [[political]] domains assuming the availability and widespread adoption of a free [[knowledge commons]]. This is done in the form of a series of short reports and exploratory essays.
Vision
The Agora can be defined most generally as a subset of the [[internet]]4 used consciously and towards a particular purpose. Slightly less generally, as per the above, it can be seen as a platform and a protocol for provisioning and maintaining a [[commons]] (initially digital) enabling a community to efficiently define and advance their goals. Because of these broad definitions and the wide applicability of the principles detailed in this article, the background required to put this effort in context is ample and fuzzily defined at the edges.
The Agora is inspired by the work of many. Here we mention some of the core influences.
- [[Elinor Ostrom]], who pioneered the study of a well functioning [[commons]]. Her work resulted in dispelling the once dominant position that [[commons]] must be taken over by centralized agents like the state to prevent the so-called [[Tragedy of the Commons]]. Later in her career he explored the [[Knowledge Commons]] in particular in work which is equally influential.
- [[Douglas Engelbart]], [[Alan Kay]] and [[Vannevar Bush]] among many others in the field of [[tools for thought]]5. The Agora started essentially as a social [[memex]].
- [[Tim Berners Lee]] for his work on the [[web]] and later on [[Solid]], which informs the Agora's approach to managing user data.
- [[Ward Cunningham]] for developing the [[wiki]], his influence on the [[c2]] pattern repository, and his current work on [[fedwiki]], which explores many of the same patterns the Agora tries to explore in complementary ways6.
- [[Chrisotpher Alexander]] for developing [[Patterning]] as a discipline. The reference Agora, like the original wiki, tries to be a [[pattern repository]].
- [[Silke Helfrich]] and [[David Bollier]], who extended on the previous and worked actively on a [[Pattern Language]] for the Commons.
- [[Murray Bookchin]] for developing [[municipalism]] and his vision for [[the revolution in the 21st century]].
Finally, a [[caveat emptor]]: the [[reference Agora]] is highly [[idiosyncratic]]. It is [[linked]] to a pragmatic project directed towards world improvement, specifically an experiment in [[protopian thinking]] applied to [[global reform and revolution]]. This project tries to explore the full nature of the internet as it could be, using the [[tools]] at hand to work on pressing [[tasks]] as we try to optionally improve the world together. More concretely, [[Flancia]] is an exploration on the power of [[tools of thought]], including [[social media]] and more generally distributed [[writing]], to advance [[altruism]], [[rationality]] and [[loving kindness]].
Agora Commons
The heart of an Agora is the [[Agora Commons]]. It is a [[digital commons]] to start with, extending potentially to an inclusive virtual and real [[commons]] able to sustainably support its associated communities materially.
The [[Triad of Commoning]] as described in [[Free, Fair and Alive]] can be seen to apply to the [[knowledge commons]] we would like to build here, and this informs the design of the [[Agora project]]:
TODO (Diagram): [[Triad of Commoning]] as it maps to the triad of the [[Agora project]]: [[Agora Protocol]], [[Agora Platform]], [[Agora Commons]]? But the later sounds like a category mistake now. Is the Agora just recursive? :) Maybe this works better if we just mention [[intents]].
TODO (Text Structure): Making the commons a higher level section would probably clarify the structure a bit, allow me to bring in the [[Triad of Commoning]], etc. -- but maybe this has already happened, check/fix once we're in [[Google Docs]] as it'll probably be easier then.
Terminology
This project is of large scope and makes use of terminology from different fields, drawing from computer science, systems thinking and political theory. It also makes use of metaphors. To aid understanding, here we provide a short summary of key terms to follow.
- [[Agora]]: a [[protocol]], a [[platform]], a [[commons]]. The [[noosphere]]. [[Internet]] as a tool held right.
- [[Graph]]: the heart of the Agora. A distributed [[knowledge graph]] in particular, both explicitly and implicitly containing a variety of social graphs.
- [[Node]]: a vertex in the knowledge graph. Maps to an [[entity]] description encoded in a [[wikilink]] or #hashtag. Maps to a mental [[context]] in an Agora user.
- [[Subnode]]: a resource contributed by a user which the Agora will provision when queried for a variety of [[Node]] contexts. A node is a collection of subnodes.
- [[Link]]: an annotated edge in the knowledge graph. A relationship or connection between concepts or contexts, optionally annotated. Technically you can think of it as tuple of nodes linking to each other, or more generally a set or sequence of nodes related to each other via a composite relationship (e.g. a link with annotations). The later results in a [[hypergraph]] which is what an Agora generally implements.
- [[Garden]]: a repository of resources maintained by a user over time. (Optionally entity mapped) information contributed by a user diachronically.
- [[Feed]]: a sequence of points in time with pointers to objects. Interesting resources as positioned in a [[timeline]]. A core [[Web]] technology that an Agora can both consume and provide.
- [[Stoa]]: a repository of resources maintained by a group over time.
- [[Bridge]]: a device or process connecting contexts, applying to both nodes and repositories.
- [[Siphon]]: a bridge which exploits a gradient.
- [[Commons]]: a [[social organism]] or [[social system]] provisioned and maintained by a community of practice for the [[common good]]. As per [[Elinor Ostrom]], [[Silke Helfrich]], [[David Bollier]], etc.
Intents
This section details intents, goals and values as they relate to the definition of an Agora on a high level.
- The Agora is a [[project]] for the betterment of the internet, potentially leading to the betterment of the world.
- To join an Agora, you only need to say you want to join it.
- The Agora is a platform for [[commoning]] built on a set of public [[intents]], including declarations of [[goals]] and [[values]].
- If you tell an Agora about a resource you care about, the Agora will try to link it and optionally save it for you.
- The Agora as a project is positioned at the intersection of the fields of [[commoning]], [[patterning]] and [[knowledge management]].
- The Agora is a social [[memex]].
- The Agora is an experiment which seeks to answer the following question: what if, in the field of [[tools for thought]], [[multiplayer]] meant also [[multitool]]?
An [[Agora]] tries to meet the user where they are. As a service in the internet, you don't sign up to an Agora: you sign in. Albeit the reference Agora is based firmly on [[web 1]] principles and core [[web]] protocols and architectural styles like [[http]], [[rdf]] and [[rest]], it also includes partial implementation of [[social]] protocols like [[activitypub]] which affords it a basic level of integration with the [[Fediverse]] and Twitter[^twitter].
In the terms of the [[Knowledge Futures Group]], the [[reference Agora]] is a system that provisions an [[overlay]] (demo at https://anagora.org) querying an [[interlay]] ([[go/agora]], the [[Agora Commons]]) integrating [[repositories]] from a primarily [[git]] based [[underlay]].
With this tool the Agora community can embark on shared projects. The author, as one member of the [[Agora community]], would like to propose (offer) a series of [[projects]] as public collections of [[intents]] in the [[commons]].
[[Agora Protocol]]
Let us use [[Agora Protocol]] if we may.
This section describes a [[protocol]] for publicly defining sets of [[intents]] that can be said to define an Agora. An Agora is a public space that defines itself as such and follows an explicit variation of the Agora Protocol by [[convention]].
In text format, [[Agora Protocol]] is a series of typographical conventions that allow users to link and annotate resources regardless of the medium. Annotating here stands for encoding metadata and personal meaning in resources in a way conducive to be later decoded in an Agora-like [[context]].
If you are reading this book, you probably know Agora Protocol even before reading about it; it is meant to reflect and build on existing practices in the personal knowledge management space, like:
-
#Tags designate entities as related to the annotated resource.
- #PascalCase may be used to encode sentences.
-
[[Wikilinks]] designate entities as related to the annotated resource.
- Wikilinks may be preferred when trying to encode sentences a particular typographical realization, as they seamlessly contain lossless [[unicode]] strings.
On a pragmatic level: if a person declares a public space or shared resource to be in an [[Agora]], it is in the Agora by definition. This extends to conversations in the real world.
Agora Protocol is parsed by every Agora. On interpreting a statement as an intent, an Agora may take action for the benefit of the user.
An Agora always links by default. Users can opt into automatic saving of resources, meaning storage of resources in a repository under the users' (preferred) or an Agora's control.
-
[[Optimistic linking]] is encouraged.
-
Links that lead nowhere (currently) are encouraged.
- In an Agora, the place they lead to by default includes resources written by others.
-
Links that lead nowhere (currently) are encouraged.
- [[Outlines]] or [[Agora trees]], as encoded by nested lists such as this one, might be parsed by default as declaring useful [[patterns]]7.
When interpreting the above and extensions, an Agora is liberal in what it accepts and when in doubt tries to default to being extra useful to the user -- meaning it is optimistic in association and surfaces all resources that have a claim to be associated with the context being served. For example: #CamelCase will be provided in all contexts matching [[camel case]] and all known variations, and this relationship is symmetric by default, in the sense that the user might provide either at write time and be later served matching resources in either context.
To put it simply, an Agora defines equivalence classes optimistically with good intention. Later we will discuss the hypothesis that this is an optimal default policy for a social platform.
Note that outlines plus [[linking]] seem sufficient to encode thoughts and structure of arbitrary complexity in a human readable way8. In the opinion of the author this seems sufficient to encode a [[hypergraph]] in a human friendly way, which might do away with the need for programmatically generated [[block references]]9. See [[Technical Specifications]] below for more.
Next we describe how [[Agora Protocol]] can help provision an [[Agora Platform]] which integrates pro-socially with the wider internet ecosystem, and how a community could use both to run experiments on distributed thought.
Agora Platform
This facet of the Agora is that which is closest to the realm of software. See [[Reference Agora]] and [[Technical Specifications]] below for more details.
The Agora Platform as described in this article is decentralized in nature: it is meant to be a pragmatic stopgap solution that is relatively easy to bootstrap and still able to compete with the centralized platforms that currently dominate the market in many fields and might vie for enclosing the [[knowledge commons]] soon. A fully distributed architecture might be preferable soon -- surely soon after achieving and ensuring [[knowledge independence]] for future generations. But a [[decentralized]] model like that used widely in the [[Fediverse]] has core strengths that suggest it might be a good fit for bootstrapping a [[knowledge commons]].
Federation
Individual Agora instances, initially provisioned and maintained by like-minded groups in a [[decentralized]] ([[Fediverse]] compatible) model, but tending towards a fully [[distributed]] model, are expected to federate in a greater [[Agora network]]10.
An Agora tries to be a [[repository]] of [[patterns]] in the tradition of [[Christopher Alexander]], [[Ward Cunningham]], [[David Bollier]], [[Silke Helfrich]] and [[Murray Bookchin]].
- #meta TODO: this [[Agora protocol]] block is a MARK for 'did new writing around here in the last pass', move/delete as needed.
The Agora network is built on a federated protocol the aim of reducing friction to cross-tool cooperation and maximizing the constructiveness of forks.
Take the case in which two groups might temporarily diverge in their views to want to run separate Agoras. Ideally their instances should be able to continue to cooperate on problems and solutions for which there is enough values/ideological alignment. Persistent best effort cooperation as a default contract also maximizes the chance of re-convergence leading to a merge.
Bridges
A [[bridge]] is a process or device that can be set up to transfer resources across (previously isolated) networks, either one-time or recurringly.
Bridges are useful in that they lower friction for users to move across tools and platforms in an ecosystem, and to keep control of their data (as a bridge can be made to cross post data to a repository under the user's control, or compatible with the user's data sovereignty).
Bridges are the main tool we have to enact [[counter anti disintermediation]] and push back against [[walled gardens]].
An Agora tries to provide safe, useful bridges to the community as a public service.
Siphons
A [[siphon]] can be seen as a bridge across which [[flow]] happens efficiently after some initial [[effort]], with cost-benefit often following a Pareto-like 20-80 distribution. Many Agora siphons are specialized to perform pro social [[adversarial interoperability]].
An example siphon would be a bridge with a one-time setup cost (e.g. an end user having to set up an API key for a walled garden) but which can then be run continuously afterwards at low cost (of maintenance on behalf of the user, and of computation).
Agora Commons
An Agora is a [[knowledge commons]] provisioned and maintained by a self-governing community for [[public good]].
- #pull [[elinor ostrom]] [[free, fair and alive]]
A [[commons]] consists, at a minimum11, of:
-
[[Commoning]], an activity.
- Exercised in an [[Agora]] via [[Agora Protocol]] as described above.
-
[[Commoners]], a group of people.
- Interacting optionally in the [[Agora Platform]] as described above.
-
[[Common goods]], a group of resources.
- Described in this section.
An [[Agora]]'s [[root repository]] is a [[seed]] for an Agora. In the provided reference Agora platform, the root is a [[git]] repository12 which contains:
- A
sources.yaml
file containing a list of all repositories to be integrated into an Agora plus useful metadata. - A
CONTRACT.md
file containing a list of assertions declaring high level goals and values for the Agora. - A
README.md
file containing instructions on how to provision an Agora using the above and free software.
Intents
An Agora contains collections of [[common]] and [[personal]] intents.
By becoming part of the reference Agora, users endorse [[common]] intents by default, but can [[opt out]] of any intents perceived as problematic. In addition they can contribute personal intents which can be endorsed by other users, thus becoming [[common]].
These are sample intents of the [[author]]. They can be optionally endorsed by users of an Agora.
- The author proposes we use an Agora to define and extend Agora Protocol as a project in the [[commons]].
- The author tries to follow the [[principle of charity]].
- The author tries to use [[Agora protocol]] to communicate with clarity.
- The author tries to [[cooperate]] with others [[pro socially]] by default.
- The author tries to [[help]] others whenever possible.
- The author proposes we extend [[Agora Protocol]] with [[feature requests]] contributed as [[agora rfcs]].
-
#push [[values]]
- [[Data Sovereignty]] (see [[Data Ownership Model]] for details.)
- Sustainability.
- Diversity.
- Freedom.
- Compassion.
-
#push [[goals]]
- A free, distributed internet.
- Freedom of information.
- A world without poverty or violence.
- #pull [[manifesto]]
Literate programming
Intents in [[Agora protocol]] can be interspersed in long form writing, in which case they can act as human-readable metadata.
[[Tree structures]] with [[wikilinks]] are assumed by an Agora to carry [[Agora protocol]] by default, and may be elided or hidden when performing human-readable format conversions through [[Agora sync]].
Agora RFCs
[[Agora RFCs]] are the standard way to suggest extensions and modifications to [[Agora Protocol]].
They are meant to be cheap to write, and conducive to running experiments. RFCs are specified by nodes declaring themselves to contain an Agora RFC; a number might be provided by an Agora, but at present time there is no mechanism for allocating numbers except claiming one by pushing an RFC to it in the Agora of Flancia (or any other trusted root). Conflict resolution is done by the community of the Agora. To put it bluntly, an Agora is its own [[numbers Czar]]13.
Agora RFCs might be of varying length and detail, spanning in length from that of common IETF RFC to a tweet or toot describing a social custom to be considered by the community. RFCs which are judged promising by a community will generate and can be expounded about at greater length by the interested community and potentially worked upon in a [[Stoa]].
[[Agora Actions]]
An [[Agora Action]] is a hint left in some medium by a user of [[Agora Protocol]] for the Agora. The purpose of the hint (its nature) is defined by the action; in general, though, Agora actions can be seen as lightweight contracts between an Agora and its authors. Invocations of an action are interpreted as [[intents]].
An [[Agora Action]] is hinted by default by #tagging or [[linking]] the name of the action in resources, optionally next to nodes and URLs which the action might take as parameters.
The sections below should clarify this.
[[Go links]]
#go is an [[Agora Action]] that designates URLs as canonical or highly ranked references for nodes in which the action appears.
Go links provide an interesting base case to study in the field of provisioning and (pro socially) exploiting14 a [[knowledge commons]]. Put simply, [[go links]] are named social bookmarks -- strings of text (usually slugged, but not necessarily) associated with URLs by users in a community of practice.
[[Go links]] are a [[cognitive tool]] which was developed in [[Silicon Valley]] corporations and has the potential to spread and provide utility at internet scale. As [[cognitive artifacts]] they have a meaningful [[complementary]] component, which makes them interesting as a case study of [[Agora RFCs]] regardless of primary utility of application.
As an [[Agora action]], the contract provided by Go links is as such:
- When you tag a URL with #go or [[go]] by placing said links previous to it in your writing, an Agora will interpret this as an intent to create a Go Link and provision and provide one for you on querying.
-
An example:
-
#go https://anagora.org
- Means that the Agora nodes which the document I'm writing this on will be served at will, by default, provide a redirect to https://anagora.org when queried for go links.
-
#go https://anagora.org
The primary utility of Go Links, regardless of implementation details, is high. In a [[go links]] rich environment, users can depend on other users to have defined [[canonical links]] for named [[entities]]; that is, collections of specially relevant resources to the terms at hand, as shared in a [[commons]].
-
Go links provide an [[individual]] function.
- They allow the user to associate a (usually short) string with a resource of interest, and then recall it from any computing with network access with a short deterministic flow.
- At companies supporting [[go links]], typing go/ in the browser address bar is usually sufficient to be redirected seamlessly to the target resource.
-
Go links provide a [[social]] function at low or no additional cost.
- The trivial extension case for them is social bookmarking; even with invidivuals (not groups) claiming go link space recall of links spreads through a community of practice.
- Sharing documents becomes simpler by definition in a community of practice that is go links aware. Instead of locating a resource and invoking a sharing flow to share, users are able to say to each other 'go thisdoc' (meaning either go/thisdoc or go/this-doc by convention), effectively transferring a URL in spoken word very efficiently, depending only on a previously understood mechanism to resolve such links (at a well known point, ideally a [[schelling point]]).
[[Pull]]
#pull is an Agora Action. Its effect is Agora dependent but is, in essence, a form of [[transclusion]]: pull will result in a remote mental context being embedded in the current one.
#pull takes a [[node]], a [[node/heterarchy]] or a URL. Nodes might be embedded by an Agora using special in-Agora provisions. URLs might be embedded in web browsers according to X-Frame policies.
[[Push]]
#push is an Agora Action. Its effect can also be described as transclusion, but in the opposite direction: whereas Pull will transclude a remote context in the current context, Push will transclude the current context in a remote context. Push can be thought of as publishing to a [[topic]] in a PubSub system.
#push takes a [[node]], a [[node/heterarchy]] or a URL. The meaning of pushing to a node is to publish the blocks or context in the destination node; the reference Agora publishes them in a similar format to local resources, either preceding them or after them depending on configuration. The meaning of pushing to a heterarchy (or "path") is to request attaching the resource or context at a point of insertion identified by the heterarchy as an anchor, if one is found (essentially allowing to fine tune placement).
In an Agora, section headings may push the whole section to mentioned nodes.
[[Stoas]]
A resource can be declared a [[Stoa]] by tagging it as such. This marks it as a resource meant for [[cooperation]] or [[commoning]].
Applications
This section explores possible further applications in the social and knowledge spaces in the form of a series of short essays.
Provisioning meaning together with federated heterarchies
- An Agora supports taxonomies in principle but mostly provides a set of basic tools to converge on meaning best effort through social processes based on federated [[heterarchies]].
- [[Agora trees]], meaning by default [[outliner mode]] text with [[wikilinks]], hint at sections containing [[Agora Protocol]].
- [[Agora RFCs]] allow a distributed Agora community to extend the base [[Agora Protocol]] for more efficient [[commoning]] using atomic proposals.
- TODO: (Details on an [[open source algorithm]] for ranking and filtering based on the above go here.)
- TODO: (Details on eventual [[convergence]] as a phenomenon to be studied.)
An Agora tries to solve all of these based on social signals contributed to the commons:
-
[[taxonomies]]
- [[heterarchies]], as represented by [[agora trees]] and [[path/like/queries]], can be reinforced by the Agora as more users hint at them.
- Hypothesis: this can do away with the need for fixed taxonomies or category systems, and the associated upkeep cost (and potentially gatekeeping) that comes with them.
- [[equivalence classes]]
-
[[ranking]]
- It is well known15 that links provide a strong signal for relevant and notability in graph like systems.
- #uprank is an explicit Agora Protocol action that takes a subnode or user and hints at an intent to rank them more highly than the current resource.
- #pull can be used as a ranking hint as well: if [[x]] pulls [[y]], [[y]] is more likely to be roughly as relevant as [[x]] in any contexts in which [[x]] is relevant.
Collaborative world building
-
We seek to provision and maintain a distributed knowledge graph tailored specifically to the goal of solving problems: those of its users and society at large.
- This [[knowledge graph]] will be a [[commons]].
-
Its users, as a cooperative group, are promped to take a naive but rational and constructive approach to problem solving by default:
-
For each problem in the set
P
of all problems:- Describe it as thoroughly as possible.
- Maintain a set of known and supported possible solutions,
S(P)
.
-
For each solution in
S(P)
:- Describe it thoroughly as an algorithm, a dependency graph or both.
- Maintain a set of resources (people, time, attention, wealth) needed to implement it,
R(S(P))
.
-
Individual users can also declare their views on the state of the world explicitly: they define which subsets of
P
,S
andR
they agree with, in the sense that they believe they are feasible, true, interesting.- Users that agree on their defined subsets can then efficiently collaborate on solutions as they become available by pooling of resources.
-
For each problem in the set
-
Assuming the existence of such a graph we apply some good old recursivity and bootstrap an Agora with the problem of building itself.
- That is, we are tasked with solving the problem of building a system that allows participating users and entities to collaborate optimally in the face of adversity (such as biases and irrationality), maybe only assuming good intent.
Node Club
Once a week or a month (depending on the time of the year), the [[Agora community]] proposes a set of nodes to be provisioned loosely concurrently over the next period -- meaning nodes to be contributed to individually, at roughly the same time.
Thank you to [[neil]] and the [[agora community]]!
Educational technology
Solving coordination problems
- An Agora can be seen as a would-be [[Schelling point]] built around the [[principle of charity]].
-
An Agora can be used to solve [[coordination problems]] like those we need to solve to enable users to leave walled gardens and protect the [[commons]] against [[enclosure]] by [[anti disintermediating]] parties. It can be said to be a device for enacting [[counter anti disintermediation]].
- An Agora provides tries to provide free [[bridges]] to escape [[walled gardens]] with your friends.
- An Agora can help people regain and maintain control of their data, including their [[social graphs]].
Flow problems
- #pull [[liquid democracy]] [[network flow]]
-
We seek to bootstrap a [[Universal Basic Income]] experiment using an Agora with a set of simple rules:
- If you consider yourself under-privileged, you sign up to receive an income.
- If you consider yourself over-privileged, you sign up to donate an income.
- Incomes are recurring donations for a set number of months.
-
Optional [[virality rule]]: the person receiving the income should elect to forward e.g. 10% of the sum received to someone less privileged than them.
- The virality rule both pushes network growth and constructively exploits wealth inequality and asymmetry of information: an under-privileged person is closer in the world to a more severely under-privileged person than the initial donor, so can more efficiently allocate the resources. This also empowers under-privileged people to also make ethical decisions.
- [[Flancia Collective]] runs experiments in this field using an [[Agora]].
Market composition and regulation
A [[knowledge commons]] may be conducive to tackling the issue of regulating markets responsibly. A commons can essentially embed a federated network of ethical markets; the community of commoners can agree on the definition of such network and the rules which they which to enforce on transactions through the interface.
Commons can be seen to be well positioned to operate as meta-markets in a world (and internet) where markets, originally distributed in nature, have been coopted by corporations.
Application stores worldwide, the dominant bookseller in many countries -- all work as centralized markets that can impose high trading fees because of the lack of competition. It seems evident we must avoid this same scenario from reoccurring in the [[Tools for Thought]] space; a federated network is needed. But corporate profit driven interests are likely already dreaming of taking hold of the space; how can we stop them?
Simple, maybe: we must retreat up a level and build a healthy integration layer that pushes back against early efforts to build walled gardens around tools and their strong communities. We must build bridges out of walled gardens and into the commons and there provide services to users of a wide range of tools, and enable ethical corporations to use these bridges to also provide these services.
Technical specifications
Agora Protocol example
The blocks that follow, and others in the current text in the same [[console typeface]], are a self-documenting demonstration of text based [[Agora Protocol]].
-
#push [[agora protocol]]
- (Push can be used for writing child blocks to a remote context, as if broadcasting to a [[pubsub]] topic.)
-
a [[protocol]].
- Based on lightweight conventions conducive to [[knowledge federation]] of supported [[data formats]] as described below.
-
[[plain text]] as layer 0 (bootstrapping).
- What the literate world already runs on: just plain old human language in full [[unicode]].
- Note that indented bulleted lists are efficient while encoding trees, [[heterarchies]].
- [[wikilinks]], #hashtags and other link conventions and annotation as part of layer 1.
-
Layer 2 being defined, the same as refinements to other layers, as [[extensions]].
- If you are a member of an Agora, you can propose extensions to Agora Protocol by contributing to [[Agora RFCs]].
- This should be sufficient to bootstrap a [[governance layer]] defined by each [[Agora]].
- #pull [[agora rfcs]]
- (Pull instructs an Agora to incorporate a remote context into the current context, e.g. [[transclude]] or provision below.)
Data format
-
Layer 0: [[plain text]].
- Plain text is ubiquituous.
- It is not only a common standard for all tools in the knowledge space, which simplifies interoperability; it is a common standard for thought as shown by thousands of years of preserved culture.
-
It can trivially encode outlines.
- It can be made to encode trees, like in this example.
- Indented bulleted lists designate a useful [[heterarchy]].
-
It generalizes to binary data.
- It can be made to encode arbitrary data via application of uuencode or other encoding conventions.
-
Layer 1: [[markup]] and conventions for cross-referencing and linking.
- Markdown, org mode, HTML or other rich markups building on top of plain text belong to this layer.
- [[wikilinks]] and #hashtags seem like sensible cross-format extensions for semantic linking.
- Markdown plus [[wikilinks]] is the default Agora layer 1 format.
- More generally, this is an [[inline metadata]] layer. The above are just relatively unobstrusive generally available implicit standards that inline well.
-
Layer 3: JSON, EDN, RDF, protobufs.
- In general, data exchange formats.
- The Agora reference implementation currently provides JSON and RDF endpoints.
Graph definition
The Agora [[knowledge graph]] can be defined as a hypergraph A
with a set of k
nodes N
([[entities]] an Agora knows about) integrated out of subnodes SN_0 .. SN_k
, each containing subedges SE_0 .. SE_k
, aggregating into edges E_0 .. E_k
(semantic links between entities inferred from known subnodes). Edges are annotated implicitly by link context and explicitly via the use of [[agora protocol]] affordances, which is extensible and tries to build on existing conventions in the [[personal knowledge management]] space.
An Agora differs from other projects in the personal knowledge space in a few ways: whereas a personal knowledge graph usually contains resources authored or collected by a single person, and a wiki usually contains resources produced by a group, an Agora contains, integrates and interlinks both personal and group resources. Whereas links in a personal knowledge graph or wiki usually have a single target, Agora links fan out by default and can be thought of as queries mapping to sets of resources. This is consistent with a general design principle of facilitating storage and retrieval of entity-mapped information with a view toward removing friction from agreement and cooperation.
Building on these general principles and a [[free software]]3 reference implementation of the underlying protocols and data, we model and detail how to implement a distributed system that provisions social knowledge services ethically and sustainably with a focus on upholding [[data sovereignty]] principles. We then analyze some of the potential applications of such a system. Finally, we shortly explore future work and implications assuming that the Agora network is run as a [[confederated]] system for the [[public good]].
-
Being built around a [[knowledge graph]], an Agora can be defined as a set of vertices or nodes
N
(each mapping to an entity in a knowledge base) and edgesE
(each mapping to a relationship between entities, annotated by context).-
An Agora [[node]] is a collection; it contains the set of all known resources about (or related to) the entity described by the node id, defaulting to its name as an arbitrary length unicode string.
- (But potentially overridden or extended with provided metadata and annotations.)
- In this paper each such resource attached to node
N
is known as a subnodeN_s
.
- Note that because links can be annotated by context (as they can be considered to be by nearby #tags and [[wikilinks]]), an Agora graph can be said to be a hypergraph 16.
-
An Agora [[node]] is a collection; it contains the set of all known resources about (or related to) the entity described by the node id, defaulting to its name as an arbitrary length unicode string.
Reference implementation
- This section covers details on the work-in-progress reference software implementation built on the principles described above, developed as [[free software]] and run as [[public service]].
- The provided [[reference Agora]] is designed to be a minimum viable cooperative platform that integrates and complements [[personal knowledge graphs]] in particular and, more generally, any writing done with a [[social stance]].
- Its guiding architectural principle being to build as much as possible on already existing conventions common to as many tools and platforms as it is possible with the aim to achieve maximal inclusivity and diversity.
Here we cover some details of the provided free and open source reference Agora which provides a minimum viable implementation of the [[underlay]], [[interlay]], and [[overlay]] components of a [[distributed knowledge graph]]17.
-
The reference Agora stands out from other projects in the [[knowledge graph]] space in a few ways:
- Whereas links in a personal knowledge graph or wiki usually have a single target (a particular note or page), Agora links fan out by default; targets can be thought of [[collections]] of resources.
- While a personal knowledge graph usually contains resources and links authored or collected by a single person, and a wiki usually contains resources provisioned by a group in (a priori) a shared voice, an Agora tries to integrate and interlink both personal and group resources while preserving distinct voices18.
- As of the time of writing, some personal knowledge graph tools are exploring collaborative editing in format- and platform-specific ways. In contrast to this, the reference Agora described in this chapter tries to be tool, format and platform agnostic to maximize interoperability and data exchange and provide utility to users of many tools and systems. This is achieved by targeting a minimum viable set of cross-tool conventions.
Architecture
-
The reference Agora is a simple distributed architecture based on off the shelf components.
- [[agora root]] is a git repository containing the Agora definition, meaning a base [[contract]] which sets the tone and high level goals of the Agora, and a list of data sources to be recurringly integrated.
-
[[agora bridge]] is a git repository containing connectors and importers for supported data sources.
- User controlled [[git]] repositories are the default data source.
- [[agora server]] provides a UI supporting querying and composition and [[json]], [[rss]], [[rdf]] endpoints.
Data ownership model
- TODO: or [[data sovereignty]], [[data safety]]?
The [[Agora platform]], although strictly rooted in [[web 1]] principles in its reference implementation as of the time of writing, is based on a strictly distributed model: by default users are entities that inform an Agora of repositories they want to contribute to the [[commons]]. As such, an Agora is trivially distributed in the sense that all data required to bootstrap it is hosted independently by users at independent locations19.
-
Users can contribute [[repositories]] to an Agora.
- To do so, they publish their resources to a repository they control and then they let an Agora know of their intention to integrate, a desired username and their agreement with an Agora's contract.
- [[git]] repositories are the default data source, with other repository providers ([[http]], [[ipfs]], [[drive]], [[dropbox]]) to follow.
-
Users can contribute individual [[resources]] to an Agora.
- As of the time of writing they can interact with an Agora system account (i.e. bot) in supported platforms like [[twitter]] and [[mastodon]] while indicating nodes they want to attach to using a Layer 1 convention.
- (Soon they will be able to submit this information directly on the [[agora server]] provided interface.)
-
Whenever a user signals [[opt in]] to remote writing (bridging, siphoning, cross posting), [[an Agora]] does its best to guarantee user data ownership.
- By default, an Agora will not store data for the user if it the user has not signaled a strong enough intent to write full data. Instead, an Agora will try to [[link]] to resources only in matching contexts, allowing users to recover resources without meddling in data management (see [[go links]] study case).
-
Whenever it does write data, an Agora will try to provision a separate repository per user and try to turn data management into a user's concern at the user's earliest convenience.
- To put it another way, an Agora actively tries actively to own no data, preferring instead to act as a temporary [[data steward]] of the users' repositories.
- When an Agora sets up a repository for the user, as in the case in which the user requests to write without having previously indicated their repositories, the Agora will try to set up repositories in such a way that turn-key full access can then be given over to the user on demand.
- Inasmuch the user depends on services associated with an Agora for repository hosting, an Agora tries to trees repositories as instances of [[pods]] in the [[Solid]]20 sense.
Endpoints
This section triers to summarize the endpoints that [[Agora server]] provides and plans to provide.
Agoras can define mappings from these to URL schemes generalizing to isomorphic REST-like APIs using agora.yaml
21.
Entity resolution
- GET /<context> -> by default the same as /node/<context>, might be overridden with a more particularly useful context
- GET /node/<node> -> entity resolution, node can be percent-encoded
- GET /nodes -> lists known entities in canonical form
- GET /@<user> -> provides details about a user and the [[subnodes]] in their repositories.
- GET /users -> lists users
- GET /search?q=<query> -> generally redirects to /node/<node>?q=<query> with node being a maximally useful context while preserving fidelity with the percent-encoded query string
Feeds
- GET /feed/@<user>
- GET /feed/<node>
- GET /feed/journals
- GET /feed/journals/@<user>
- …
Actions
- GET /go/<node>
- GET /go/<node1>/<node2>
- …
References
- [[meta]] TODO: move these to IPA? :)
-
#pull [[elinor ostrom]]
- [[commons]] [[knowledge commons]]
- #pull [[murray bookchin]]
- #pull [[christopher alexander]]
- #pull [[how can we develop transformative tools for thought]]
-
#pull [[hans widmer]]
- [[bolo bolo]]
Thanks and farewell
The author would like to thank [[Flancia Collective]], the [[Agora community]], and the [[Fellowship of the Link]]: for your inspiration, interest, guidance.
To my [[friends]]: for your ongoing love and support.
To you: for reading.
To all the Agora builders and maintainers through history, including those of the motivating historical [[poleis]] and those who will build Agoras for the peaceful cities and countries of the future.
Finally, some friendly parting words: if you don't like this [[Agora]], rest assured that's perfectly alright -- it is early stage. The [[Agora of Flancia]] is [[open source]]; these projects have [[Apache]] and [[Creative Commons]] licenses respectively. Please consider improving them!
-
both commonsense and related to instances of [[commoning]].↩
-
The provided [[reference Agora]] tries to remain tool, format and platform agnostic, building on general conventions common to many tools and platforms in the knowledge space for ease of integration and maximal inclusivity22 and diversity23. ↩
-
Or [[Web]]? See literature for most common term, likely web due to ties to the [[semantic web]] if nothing else.↩
-
As per Matuschak and Nielsen (2022), Kenneth Iverson seems to be the source of the currently dominant blanket term "[[tools for thought]]" -- although I can report he didn't use it in his seminal paper, preferring instead "[[tools of thought]]". I use these two interchangeably, maybe preferring the latter due to it giving thought agency.↩
-
As of the time of writing the reference Agora can't publish to fedwiki, but can import fedwikis into the Agora Commons as repositories.↩
-
An Agora is a repository of [[patterns]] and its design owes a lot to [[Christopher Alexander]], [[Ward Cunningham]], [[David Bollier]], [[Silke Helfrich]] and the [[commoning]] community.↩
-
indentation is sufficient↩
-
Hypothesis: [[Block References]] are suboptimal as [[cognitive devices]] due to being [[competitive]], whereas user generated IDs and encoded structure can be [[complementary]].↩
-
An Agora is part of the Fediverse.↩
-
https://logicmag.io/commons/singular-plural/ (or https://anagora.org/go/singular+plural as of the time of writing.)↩
-
https://github.com/flancian/agora (or https://anagora.org/go/agora as of the time of writing.)↩
-
https://www.rfc-editor.org/rfc/rfc8700.html#name-the-rfc-management-and-edit↩
-
TODO: there's probably a better term for this in [[Free, Fair and Alive]].↩
-
TODO: find paper or good up to date reference.↩
-
"Stephen Wolfram likes them." -- see for example https://www.wolframphysics.org/technical-introduction/.↩
-
it is an expression of the [[pattern]] [[chorus of voices]].↩
-
as of the time of writing, GitHub is the most popular git host, but not by much (TODO: percentage goes here). This is likely suboptimal as it undermines the claim of the resulting [[knowledge commons]] of being truly [[distributed]], and can be seen as an instance of the (anti-)pattern [[Anti Disintermediation]].↩
-
https://en.wikipedia.org/wiki/Solid_(web_decentralization_project) ↩
-
or TOML?↩
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
agora pkmchat
-
a [[meeting]]
- an instance of [[pkmchat]]
- [[2021-04-08]] at 1PM CET
- I'll be covering https://anagora.org/go/agora/slides (draft)
Bruno Winck is inviting you to a scheduled Zoom meeting.
Topic: Flancia!
Time: Apr 8, 2021 01:00 PM Paris
Join Zoom Meeting
https://us02web.zoom.us/j/86982048712?pwd=dldPa1k1bXI3S1lxQTdWVWluRklnQT09
Meeting ID: 869 8204 8712
Passcode: 154708
One tap mobile
+13126266799,,86982048712#,,,,*154708# US (Chicago)
+13462487799,,86982048712#,,,,*154708# US (Houston)
Dial by your location
+1 312 626 6799 US (Chicago)
+1 346 248 7799 US (Houston)
+1 646 558 8656 US (New York)
+1 669 900 9128 US (San Jose)
+1 253 215 8782 US (Tacoma)
+1 301 715 8592 US (Washington DC)
Meeting ID: 869 8204 8712
Passcode: 154708
Find your local number: https://us02web.zoom.us/u/kbElQipjwk```
Agora Plan
Introduction
The [[Agora]] is a project with a large [[scope]], so it takes a minute to explain what it's all about, and what the vision this plan tries to advance is.
If you'd like a quick introduction to the Agora as of mid 2021, please check out [[go/agora-slides]].
You can also refer to [[go/agora]], that is the documentation in the [[root repository]] currently hosted on [[github]].
What this node is for
This node is used as a project planning page for the [[Agora]] implementation you're likely reading this in now: https://anagora.org .
As you might know by now, an Agora is a beast with multiple legs:
- A [[knowledge graph]]. This is the heart of the [[Agora]]. It is kept in the [[go/agora]] repo, and includes pointers to other repositories.
- A web server and associated client code, which the [[flancia collective]] runs on https://anagora.org . It is kept in the [[go/agora-server]] repo.
- A set of bridges to connect other platforms to the [[agora]], and the Agora to to [[other platforms]]. These are kept in the [[go/agora-bridge]] repository.
This node might deal with development of any and all of them. We will try to list past major developments below, but this node will try to also be [[future focused]].
Next
-
[[agora]]
- new users are trickling into the community, although the signup process is still manual; need to ship the repo api in [[agora bridge]] to improve the sinup flow.
- considering [[logseq]] and [[tiddlywiki]] as recommended web clients.
-
[[agora server]]
- looking better than six months ago, but needs work
-
[[better parsing]]
-
blocks [[auto push]]?
- perhaps not for inline (same line) pushes
-
blocks [[auto push]]?
-
[[agora bridge]]
- need to have [[agora twitter bot]] call out to [[repo api]] to store nodes per-user
- need to have [[agora mastodon bot]] automatically respond to toots with [[patterns]] from followers
-
[[patterns everywhere]]
- new name for [[wikilinks everywhere]], [[vera]] leading
-
[[flancia]]
- need to work more on [[building bridges]]
-
[[flancia collective]]
- need to explore [[governance]]
- [[vera]] started [[flancia social impact]]
Previously
-
On [[2021-11-06]]:
- Lots have happened. I gave up trying to maintain this for a while, instead using my journals and a transitive subset of the [[Agora]] to document the development process.
- See [[flancia collective]], [[agora discuss]], [[journals]].
-
On [[2021-01-30]]
- onboarded [[enki]]
-
[[nodes]] are now color coded:
- [[dark violet]] for the [[primary node]], that is, any subnodes that match the wikilink you're at most precisely.
- [[dark grey]] for [[pulled]] and [[pushed]] nodes and subnodes.
-
On [[2020-01-02]] I implemented [[jump]]
- I said: "I'll implement the action and a 'jump'/ dialog always available in the Agora, perhaps replacing search in the [[toolbar]]."
- Done!
- Q: is 'go to' better than jump? I don't think so, and it could be confusing due to go links. But unsure.
- On [[2020-01-01]] I fixed node titles.
- On [[2020-12-29]] I pushed a quick patch that upranks all my subnodes, as some top subnodes in relatively popular nodes had formatting issues / were distracting. I intend this to be temporary; better ranking and formatting fixes are coming.
- On [[2020-12-27]] I released [[agora 0.5.6]] with [[pull]] support, better db code, caching... quite a bit :)
- On [[2020-12-20]] I worked [[agora 0.5.5]], which adds simple [[hypothes.is]] integration.
-
On [[2020-12-04]] I released [[agora 0.5.4]], with some improvements:
- New data model (digital gardens are not subtree'd in the main [[agora repository]] anymore, stay wholly independent)
- Index page is now just another node, subnodes can be contributed by users.
- On [[2020-11-29]] I integrated the first community contribution ever.
- On [[2020-11-27]] I fixed some bugs, like wikilinks with periods on their names not working.
-
On [[2020-11-22]] implemented count of subnodes in user pages.
- Added some amount of go links support: anagora.org/go/go now works :), points to the URL with [[go]] in anagora.org/node/go.
- On [[2020-11-17]] implemented [[latest]].
- On [[2020-11-16]] I implemented [[agora fuzzy matching]] and full text search, adopted a div based layout, improved the CSS, improved user pages.
- On [[2020-11-15]] I implemented dark mode (press on 'theme' on the top right corner to switch dark <-> light).
- On [[2020-11-14]] I released [[agora 0.5.1]].
Signups
- [[pen-coded]]: https://github.com/KGBicheno/KGB_Agora
- [[luciana]]: https://github.com/malfattti/garden
- [[arghzero]]
- [[dr_kvj]]: https://github.com/drkvj/agora
- [[jonathan-the-utopian]]
- [[enkiv2]]: http://www.lord-enki.net/medium-backup/
-
what about all of the ones licensed appropriately listed in [[kasper zutterman]]'s [[second brain]] list? https://github.com/KasperZutterman/Second-Brain
- Discussing with [[armengolaltayo]]
- See also [[digital gardeners]]
-
[[iplumb3r]]
- This seems to be in [[topincs]] format, investigate.
- [[houshuang]]
- [[joelchan86]]
- [[tilda]]
- [[binnyva]]
- [[jakeisnt]]
-
TomCassidy
- It's a public roam graph: https://roamresearch.com/#/app/Learn2020zettelkasten
-
[[metasj]] https://meta.wikimedia.org/wiki/User:Sj/!
- First user actually using a wiki!
Integrations
- [[agora-go-links-integration]]
- [[agora twitter integration]]
- [[agora-youtube-integration]]
- [[agora hypothesis integration]]
- [[roam2agora]]
- [[agora vscode]]
- [[wikilinks everywhere]]
Next
-
all http mentions should be auto linked, not only some: https://twitter.com/notverapetrova/status/1346258737204400128
- Worked around this, but I should probably send an upstream PR to [[bleach]]
- try rendering notes with [[marko]], see if it's a bit more forgiving with list indentation and other kinks that seem common.
-
add support for org mode gardens
- signup by [[jakeisnt]] is blocked on this: https://github.com/jakeisnt/wiki
- signup by [[karlicoss]] is blocked on this: https://github.com/karlicoss/exobrain.git
- this might be enough to unlock basic [[logseq]] support?
- [[orgparse]] might be useful
- [[pandoc]] supports org
- I should make node [[0.5.6]] work
- graph the whole Agora -- sounds fun!
- Implement pull and push.
-
Make more links default to node instead of subnode.
- For example those in latest, those in user pages.
- Might require 'upranking'.
- set up [[agora]] hot spare in [[dorcas]], this is an experiment but I already find it very useful so I don't want to not have it available for a while if there's a server failure
- add monitoring -- [[munin]] or something more modern? [[prometheus]]?
- Implement /node/foo/selector as more resilient/uniform alternative to /subnode.
-
Implement user upranking/pinning.
- Perhaps nodes visited from a user scope uprank subnodes by that user?
- https://twitter.com/s5bug/status/1334686375275163652 ?s=09
- Provide a link (GET) for the search for '[ ]', useful for [[do]].
- Add better backlinks, showing some context.
- Make the site header be marked as an actual header (div with a class, etc.); Google seems to think it's part of the site text (it's showing up in results).
- Fix markdown list formatting issue with different tab widths.
- add footer.
- Implement preview-on-hover?
- Implement "around the Agora".
- add /latest or some other chronological view
- User profiles: perhaps just note [[flancian]] as written by user [[flancian]]? Unsure.
- Make the index be just another note [[ding-levery]].
- Improve backlinks: show snippets as well as just the link.
- Improve pull loop to also support arbitrary hooks, like that needed to implement [[agora go links integration]].
-
Multi user improvements:
- Better sorting (right now all my notes show up at the top, doesn't make sense).
- Ability to "zoom into" a user, to navigate just their garden for a while.
- Perhaps ability to "uprank" users, pinning their notes to the top of any sorting order.
- Perhaps sort+uprank can be integrated?
- usernames could have a 'pin' emoji that upranks all their posts?
- Implement search (full text).
-
Add support for media serving (useful for pictures of [[ocell]]).
- assets/foo end up at node/assets/foo; just adding a handler for node/assets/ seems like it could be enough.
- It would conflict with a node named 'assets' though, so perhaps it's not ideal.
- Perhaps it'd be better to just serve images/media as subnodes?
- Add monitoring/alerting.
Some day:
- When you update a node on a [[person]], said person gets a notification (they can opt out).
- Support [[Roam]], [[Athens]], [[org-roam]] digital gardens.
-
Twitter integration -> [[agora twitter integration]]
- Ask [[ding levery]].
-
Automatic [[actions]] -> [[agora action]]s -> [[agora action]]
- [[tweet]] block tweets the block (exactly once, etc.).
-
[[go links]] integration -> [[agora go links integration]]
- If the first block of [[foo]] is a URL, anagora.org/go/foo just redirect there.
- Could also work as an action: [[go]] target URL.
Feature requests
- [[pull]] [[feature requests]]
History
- fix bug: backlinks should be shown even in yet non-existent nodes, such as [[deceased]].
- Clean up stale journal pages which don't follow [[iso 8601]].
- Add config.py file with things such as paths.
-
Add user handler: /u
- /u/flancian -> all nodes by flancian
- /node/flancia/u/flancian -> flancia by flancian
- Also added @flancian. Shorter is better, and it's a common convention.
- perhaps /g/ for groups later? or /s/ for stoa.
-
Add 'link to this note'.
- Now called subnode.
- Subnode rendering is ready, just need to add links.
- Perhaps I need to fix subnode paths; right now they are the actual filename. It'd be better if there was at least possible to specify the filename base (no extension) and have the right file be resolve, a la nodes.
-
add some search support -- a simple textbox + GET?
- Probably want to use [[flask-wtf]] for this: https://hackersandslackers.com/flask-wtforms-forms/
-
better css
- Add '[[dark mode]]' to the Agora, I like this kind of scheme: https://twitter.com/ablueaeshna/status/1323439284272222208 /photo/1
- added switching by button
- Make subnodes/notes look like notes instead of using clunky
<hr />
everywhere. Move to divs, etc.
- Improve the [[index]].
-
Implement [[agora fuzzy matching]].
- Done
- but backlinks don't work in some cases, like http://dev.anagora.org/node/abstract%20fairy .
- Probably not worth fixing that right now as it only triggers for nodes that are not canonical, perhaps better to just redirect to a canonical node.
- could help with disambiguation and acronym expansion
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
agora playlist
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
agora polls
-
a [[project]].
-
the [[agora]] can track [[polling]] intents across social networks, and integrate them.
- [[social media]] provides an ideal platform for opinion polling leading to governance
- it is under-exploited due to the [[walled garden]] problem
- federated polling is not only easy to implement, it is also something I believe humanity must have that could lead to significant [[reform]]
- [[features]]
- implementation in [[agora server]] ([[vera]]) and [[agora bridge]] ([[flancian]])
- [[pull]] [[girlpool]] [[on cringe]]
-
the [[agora]] can track [[polling]] intents across social networks, and integrate them.
- #pull [[agora]] [[agora paper]] [[agora server]] [[agora bridge]]
agora project
-
a [[project]].
- by [[angle]].
- [[go]] https://gitlab.com/Agora-Project
- a [[project]].
Agora Promnesia
- #same-as [[agora proposals]]
- This is the first proposal and is a test of the [[agora governance system]]
-
A platform for deciding the outcome of proposals
-
similar to [[loom.io]]
-
have an [[agora action]] to vote on a proposal
- maybe like #vote-yes or something similar
-
Looking for software tools in [[open source democracy]]
-
Potential proposals
-
What requires money
- what coops/collectives do we want to sponsor
- [[agora actions]] and how to handle them
- pull in all linked [[wikilinks]] without having to use #pull action
-
[[flancia collective]] or flancia coop
- I kinda kinda coop because it's shorter to type and less intimidating
-
What requires money
-
proposal types
- multiple choice
- yes/no
-
Links to proposals
- #pull see also [[agora pkm chapter]].
-
a [[protocol]].
-
A series of conventions that sentient beings can agree to follow while trying to communicate optimally for the [[common good]].
- A series of explicit assertions.
- Announced customarily in [[schelling points]].
- Extended through [[agora rfcs]].
-
With such a [[protocol]] we can build ([[provision]]?) a common [[pattern language]] and bootstrap a global [[knowledge commons]].
- An [[Agora]] is a [[repository]] of [[patterns]].
- A [[flancian]] uses [[Agora Protocol]] to try to define their [[intents]] publicly and cooperate with others optionally for the benefit of beings, but all aspects of Agora and Flancia are meant to be fully optional.
-
A series of conventions that sentient beings can agree to follow while trying to communicate optimally for the [[common good]].
-
a [[document]].
- #go https://docs.google.com/document/d/1JdaC_9J0uYFNFp7g7x4VNtMxJSZQsE2MQkOMmydLCCc/edit
- Trying to [[bootstrap]] the above [[protocol]].
- Plus a roadmap for a [[platform]] or federated [[network]] making use of it.
- #pull [[agora paper]].
-
In [[an agora]], [[agora protocol]] is meant to enable people to exchange [[resources]] mapping to [[patterns]] in a (by default) free global [[commons]], which I also call the Agora for short.
- This Agora is a [[knowledge commons]] but seeks to enable [[communities]] to bootstrap a physical [[commons]] to provision for their needs as well.
-
[[meta]]
- I started with [[google docs]] in 2019/2020 and then I tried moving to [[hedgedoc]] but actually I think I might just go back to the [[google doc]]. It's just a rich experience, and several potential collaborators already use it (they left comments).
- Update (2022): revamping now ocassionally while writing [[agora pkg chapter]], but it may be that the source of truth becomes [[agora paper]].
-
a social [[convention]].
-
A list of social [[conventions]] and [[assertions]].
- Focusing on improving the ability to communicate with each other with good intent.
- [[text based]] to begin with.
- This means you can use it anywhere you can write down text by default.
- Using this basic quality, we can make use of [[adversarial interoperability]] as we want to.
-
[[agora protocol]] can be used everywhere.
- It is already used in [[wikis]]. You might as well call it [[wiki protocol]] used in new contexts.
- You already use it in [[digital gardens]].
-
You can use it in [[books]].
- Books written today with Markdown u[[git]]
- In [[email]].
-
In [[chat]] and [[social networks]].
- -> [[agora plan]]
-
[[Around the web]] in general.
- -> [[agora ext]]
- This [[Agora]], resolved by default using common [[Agora endpoints]] at https://anagora.org , welcomes all [[people]] and [[formats]] a priori.
- This [[Agora]] welcomes all groups except [[fascists]] and the [[violent]].
- It is the opinion of this Agora that the use of [[agora protocol]] in a medium defines an Agora, in the sense that it designates the contexts in which the protocol is used as part of some Agora by default; and the medium as potentially interoperable with the [[Agora network]].
-
A list of social [[conventions]] and [[assertions]].
What follows is Agora Protocol in a nutshell: https://twitter.com/flancian/status/1437079533253976066 .
-
[[layer 0]]
- [[layer 1]]
-
You can use [[wikilinks]]. This expresses an intention to make use the [[wiki protocol]], of which the Agora is a special case.
- The reference Agora, in which you are probably reading this, also has some limited [[hashtag]] support.
-
An Agora is any virtual space you can define in any way you want as long as it is [[explicit]] and by default [[public]].
- Each Agora publishes a set of definitions of intention as expressed by its [[users]].
- This Agora is [[rational]], [[pro social]] and [[heterarchical]].
-
a [[protocol]].
-
for [[federation]].
- can be bootstrapped with [[agora exchange format]]?
- #pull [[knowledge commons]]
-
[[plain text]] plus as layer 0 (bootstrapping layer).
- indented bulleted lists designate a useful [[heterarchy]].
-
[[wikilinks]] and #hashtags at layer 1, plus other link conventions and metadata extensions.
-
successive layers are explicitly discussed through [[agora rfcs]] and settled through a [[governance layer]] called an [[agora]] and defined by convention.
- agora protocol payloads may be exchanged for knowledge for [[free]] in any designated [[agora]].
- this [[agora]] is built around a [[pro social]] [[distributed knowledge graph]], that is, a [[social knowledge graph]].
- see [[go/agora-slides]] for more.
- to see the communally maintained text of the full protocol, please refer to the [[stoa]] below.
-
successive layers are explicitly discussed through [[agora rfcs]] and settled through a [[governance layer]] called an [[agora]] and defined by convention.
-
a [[protocol]] is a set of explicit conventions that can be followed for a purpose.
- conventions can be optional or necessary and must be marked as such. The default commitment level for this protocol is [[optional]]. [[use must if you must]].
-
for [[extensions]]:
- push to or modify [[agora rfcs]].
- this is as kept by the community agreeing to cooperate on such a list: the community of the [[agora]].
-
#push [[agora]]
- an [[agora]] is a seed that wants to grow into a [[tree]], and from there into a [[distributed]] network.
- the [[seed]] of this agora is [[go/agora/git]], defining a [[commons]].
- [[flancia collective]] is the keeper of https://anagora.org .
- [[agora bridge]], [[agora server]] contain input (write) and output (read) code respectively.
-
#push [[agoras]]
- Compatible [[agoras]] are expected to assemble into a greater federated [[agora network]] where they can fork and merge as wanted.
- [[agoras]] must communicate clear [[goals]].
- [[2020]] https://docs.google.com/document/d/1JdaC_9J0uYFNFp7g7x4VNtMxJSZQsE2MQkOMmydLCCc/edit#
- [[the agora is a markup convention]]
- [[2021]] I presented in [[i annotate]], refer to [[go/agora-slides]] or recording if interested.
- [[2022]] writing [[agora pkg chapter]]
- [[twitter]]
-
for [[federation]].
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
Agora Publishing
- Learnt about [[mathieudutour]], author of the most promising rendering solution for the Agora: https://flancia.org/go/agora-rendering .
- Cloned that repo and started trying it out. I think it can work.
- Every [[digital garden]] should have an [[index]].
Agora Push
- As of the time of writing ([[2020-11-25]]), the Agora works exclusively on a pull model: it constantly tries to pull updates from all participating [[digital garden]]s. This is simple and works well enough but might not scale.
- Pushes could fix this. Garden owners could set up some sort of push protocol so that, on each garden update, their note taking tools or their git host ([[github]] is currently the most popular) let the Agora know that there are updates to be pulled. By doing this, they might get better refresh latency.
agora ranking
-
As of [[2021-11-06]] Agora ranking is essentially non-existent except for
-
- a hack in [[agora.py]] which upranks users [[@agora]], [[@flancian]], [[@vera]], [[@neil]] in that order -- essentially admins in order of entry. This was hotfixed in when some long content that didn't render well (due to garden conversion issues) grabbed top position in interesting nodes. It's not a stable setup and I don't like that this kind of list could grow into a fixed hierarchy.
-
-
I think we should start working on actual better ranking.
- One simple alternative would be to introduce upvotes/emoji reactions in the interface, and store those either in git (as a reaction log) or in, say, sqlite. This could be treated as 'volatile' data -- treating all data not derivable from the [[agora]] main repo transitively as volatile seems like an OK design decision to me (it would be optional, so wouldn't add to the initial setup cost).
- Another alternative would be to support explicit upranking within nodes. So, for example, if I write [[uprank]] [[@neil]] in [[flaneur]], the Agora would render Neil's node above mine.
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
Agora Reading Club
-
a [[recipe]].
- for running an [[agora]] on [[coop cloud]].
- #go https://git.coopcloud.tech/coop-cloud/agora
- #go2 https://git.coopcloud.tech/flancian/agora
-
Troubleshooting [[coop cloud recipes]]:
-
After e.g.: abra app deploy -C link.agor.ai:
- abra app logs link.agor.ai
- abra app errors --watch link.agor.ai
- abra app ps -w link.agor.ai
-
Log into the host and run e.g.
docker stack ps link_agor_ai --no-trunc
- Specially useful if containers are not coming up at all!
-
[[3wc]] also recommended temporarily replacing the entrypoint with tail /dev/null
-
You can do this in [[docker compose]], meaning overriding the container entrypoint:
entrypoint: ['tail', '-f', '/dev/null']
-
You can do this in [[docker compose]], meaning overriding the container entrypoint:
-
After e.g.: abra app deploy -C link.agor.ai:
Agora Recipes
-
A repository of [[recipes]] built on top of the [[agora]] or an [[agora like]] platform.
- Recipes are procedures to transform [[ingredients]] and [[time]] into tasty and nutritious [[food]].
-
[[push]] [[iap21]]
-
An [[experiment]] or [[mvp]] for both [[agora search]] and [[m prime]].
-
[[m prime]] is a [[problem solving]] [[framework]].
-
A [[recipe]] is a possible [[solution]] to a [[problem]] (you don't have cake yet you want cake; here's how to produce cake).
-
It includes a set of requirements or [[dependencies]].
- [[time]] and [[ingredients]]. Sometimes [[skill]].
- It includes an [[algorithm]].
-
It includes a set of requirements or [[dependencies]].
-
A [[recipe]] is a possible [[solution]] to a [[problem]] (you don't have cake yet you want cake; here's how to produce cake).
- [[agora search]] is a [[search engine]] based on annotated crowdsourced canonical references for terms or entities.
-
[[m prime]] is a [[problem solving]] [[framework]].
-
An [[experiment]] or [[mvp]] for both [[agora search]] and [[m prime]].
-
[[design]]
-
You can jump to a hosted (in-platform) recipe for [[cake]].
- Already possible if users agree to submit cake recipes to node [[cake]].
-
You can jump to an off-platform recipe for [[cake]].
- Already possible using [[go links]].
- Both in-platform and off-platform recipes should be ranked and reviewed by the community.
-
Users should be able to post [[adaptations]] or [[mutations]] of recipes and mark them as such.
- This could be done via [[push and pull]] plus [[user links]].
-
Users should be able to suggest [[experiments]].
-
An [[experiment]] is a [[mutation]] of a [[recipe]] that a user thinks could be tried.
- e.g. replacing [[butter]] with [[vegetable oil]] in a recipe.
-
An [[experiment]] is a [[mutation]] of a [[recipe]] that a user thinks could be tried.
-
You can jump to a hosted (in-platform) recipe for [[cake]].
-
[[pull]]
- [[challah]]
- [[pumpkin soup]]
- [[cake]]
- [[banana bread]]
- [[masa de tarta]]
- [[pasta frola]]
-
A [[list]].
- #pull [[agora]]
- #pull [[agora slides]]
- #pull [[agora chapter]]
- #pull [[agora diagrams]]
agora rfc
-
a [[document]].
- In need to editing, updating, etc.
- #go https://docs.google.com/document/d/1PPk6QJqXfR3Dch46go0u7r1r1OSe5-2JDadzAoBdBOU/edit#
Agora Seach
Agora Search
https://twitter.com/flancian/status/1399779789368664065
-
The [[agora]] is in essence equivalent to a [[distributed]] [[wiki]].
- Note you could theoretically use a wiki to [[crowdsource]] search results; in the limit, think of having a wiki page for every likely user query.
-
Perhaps [[agora search]] tries to find a good match for your query locally and redirects to other agoras in the network or to [[google]] or [[duckduckgo]] if a good local result isn't available.
- When it volunteers something, it also offers to continue your query in the search authority of your choice.
- [[push and pull]] could be used to offer hints for how to route queries to relevant results.
-
The [[agora]] can already be used as a [[search engine]].
-
To do so, you can use the following URL template in your browser of choice:
https://anagora.org/search?q=%s
- Searching this way behaves the same way as searching using the text box always at the top of this [[agora]].
- As of [[2021-02-27]], you can also just use [[open search]] to add the [[agora]] as a search engine; this works at least on [[firefox]]. You should be able to see the agora as an available search engine to add in the search box.
-
The [[agora]] will try to serve any relevant nodes for your queries -- useful for when you have notes on the topic you're searching for.
- In every case, the [[agora]] will try to make it easy for you to 'click through' and continue your search elsewhere -- in established search engines or the websites of your choice.
-
To do so, you can use the following URL template in your browser of choice:
- Agora Search is [[crowdsourced search]] for the [[open]] [[internet]].
- [[user story]] https://twitter.com/flancian/status/1350835941603221504
- [[keywords]] https://twitter.com/flancian/status/1352671899583713288
- [[pull]] [[crowdsourced search]]
-
This [[agora]] tries to search all [[agoras]], and also the internet as it manifests an [[intent to cooperate]].
- See [[stoa]].
- You can use [[open search]] to add it to your browser while you're visiting it.
- You can have it as default search engine, like I sometimes do, or you can associate it with a prefix. I use 'a' and 'an'. Like in 'an entity'.
- [[2021-02-27]]
Design
-
In [[agora server]],
/search
//exec
does the following:- It takes a query string in argument 'q' (sort of standard).
- It optionally tokenizes the query string (unsure if this is the right stage for tokenizing, or tokenization should be done ad-hoc by search providers to allow for domain-specific tweaks).
- It offers the query string or the tokens to [[search providers]], essentially hooks that volunteer [[actions]] or [[results]] -- perhaps as bids in a distributed system modelled as a market (later).
- It scores the alternatives and either chooses one for the user (based on programmable rules) or presents them as alternatives.
- The default action is 'redirect to the agora node matching/encoding the query'.
-
Also supported currently:
- [[go]], which redirects immediately to a go link if present in the parameter node or a [[combination]].
https://merveilles.town/web/statuses/105997152161798151 https://twitter.com/flancian/status/1379495094001238026
Agora Server
-
a [[project]]
- [[agora]] [[interlay]] [[overlay]]
- [[go]] https://github.com/flancian/agora-server
- [[git]] https://github.com/flancian/agora-server
- [[bugs]] https://github.com/flancian/agora-server/issues
- [[bug]] https://github.com/flancian/agora-server/issues/new
- [[history]] https://github.com/flancian/agora-server/commits/main
- Works with a simple implementation of the [[Agora Protocol]]; includes a web frontend and a simple backend. If you're reading this on anagora.org right now, you're using it.
- Python3 based, uses Flask. Quite simple really.
- It currently renders a collection of [[digital garden]]s as lazily assembled into a [[distributed knowledge graph]]. The graph is plug-and-play and is hosted in a different repository; that repository is the actual [[Agora]]. For the reference repository (which, again, you're likely viewing right now if you're on anagora.org), see https://flancia.org/go/agora .
- Copyright for this implementation as linked above is Google's, but the license is open source (Apache). Note this is not an official Google project and won't be supported by Google.
- See [[Agora Version]] for per-version information.
Agora Server
- server backend for [[agora]]
- talks to [[agora ctzn]]
- #issues [[agora issues]]
- run
npm install
agora@thecla:/etc/systemd/system# cat agora.service
[Unit]
Description=uWSGI instance to serve agora-server
After=network.target
[Service]
User=agora
Group=agora
WorkingDirectory=/home/agora/agora-server
Environment="PATH=/home/agora/agora-server/venv/bin" "FLASK_ENV=production" "AGORA_CONFIG=ProductionConfig"
ExecStart=/home/agora/agora-server/venv/bin/uwsgi --ini prod.ini
[Install]
WantedBy=multi-user.target
Agora Settings
- The following describes the [[agora]] editor I use as of [[2021-02-26]]. It is an [[open source]] stack based on [[vscode]], a good general purpose [[editor]] that can grow with you as you wish.
- The step by step play is:
agora setup
So you want to set up an [[agora]]? You're in the right place!
The [[agora]] is meant to be something anyone can run in their laptop or an old computer in a closet -- with some effort, which will hopefully be lowered over time as more development takes place.
The gist of it is: if you try to run an [[agora]] of your own and fail, please reach out to [[flancian]] for help.
You'll need these three repos:
- [[go/agora]]
- [[go/agora-server]]
- [[go/agora-bridge]]
Read on for more: [[pull]] [[agora install]].
-
There are many things which are [[agora shaped]].
- All of these I call [[agoras]]!
- #pull [[isomorphism]]
agora signup
-
To [[read]] the Agora, you don't need anything but a [[web browser]].
- This [[Agora]] is fully browsable on https://anagora.org .
- You can add the Agora as a [[search engine]].
-
To [[contribute]] to the Agora, first you need to publish your [[digital garden]] or [[content]] elsewhere online. The Agora doesn't host your data, but rather pulls it from a location you control and renders it for you and other users; it interlinks it with that of other users.
- If you know your way around [[git]], [[markdown]] on git is the default format. If you use [[roam]] or a [[roam like]] or you have a notes database, you're almost there.
-
Whatever participation mechanism you choose, you need to let an Agora [[maintainer]] know where your content is, so it can be pulled and [[integrated]]. We strive to continuously support new sources and formats.
-
You can send email to signup@anagora.org or reach out to a member of [[flancia collective]] with:
- The URL of your repo or content.
- Your desired username.
- Confirmation that you agree to the Agora's [[contract]] (only the one by the @agora user; other contracts are optional).
- Alternatively if you know your way around [[git]] you can send a PR for
gardens.yaml
in the Agora repo: [[go/agora]].
-
You can send email to signup@anagora.org or reach out to a member of [[flancia collective]] with:
-
The Agora wants to be [[maximally inclusive]], but it is in its infancy; it is a [[work in progress]]. If you want to participate and can't, please also send email to signup@anagora.org to let us know.
- Non-git sources and formats other than [[Markdown]] will be supported in the future; if you store your notes using some other system, please reach out.
- Through projects such as [[agora twitter integration]], we hope to make the Agora available to anyone that has access to a social network account.
- Please refer to [[agora install]] in case you want to run your own Agora; and to [[agora editor]] for more information on clients.
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
Agora Slides
This node or Agora location contains [[slide decks]] that have been produced about the Agora up to date as of [[2023]].
- #go https://docs.google.com/presentation/d/1MeYviCSxf9shZXmL8pWe6t4iR2spNqiOx0qs3swDsF8/edit#slide=id.p
- #2021 https://docs.google.com/presentation/d/10OWEuLriQpZzSJGq6vCSozZN4M34CNmEC1IrJxqk8xE/edit#slide=id.p
- #vera https://app.pitch.com/app/public/presentation/766c2727-e6f1-4ccf-b408-904b67bde5c9/5d419430-248b-4e81-a825-921e223c60dd
- #pull [[agora slides 2023]]
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
- a [[presentation]]
As of [[2023-09-10]], I am working on updating this with the [[Fellowship of the Link]] as its intended audience.
What needs updating? Before diving into it, I would guess:
- Mention the diversity and interest that its community brings into the Commons. ~60/150 direct contributors as of the time of writing depending on how you count.
- Mention social media integration (Mastodon bot) and other venues for integration with the [[Fediverse]].
- Update screenshots (this will be a good opportunity to reconsider some of the changes introduced since 2021, likely).
What else would need to be added?
- Maybe a mention of the Agora chapter in the [[personal knowledge graphs]] book.
- A mention of upcoming work:
- ActivityPub integration.
- SQLite/more stateful Agora.
- Oauth/other repository providers incoming.
Wikilinks stand for the intention to socially link.
-
Counter-argument 1: two square brackets is a lot of brackets.
- Counter-counter-argument 1.1:
Counter argument in general: on the value of [[building bridges]] and doing meaningful work in the [[Commons]].
#Flancia is an entity of category [[protopoi]].
The #Agora is an entity of category [[Commons]].
(Here I took a detour to clean the kitchen and think of [[magnetic 3d printing]])
You can currently join an Agora in two ways:
- Keep a [[digital garden]] and contribute it to the Agora in question, as defined by you and your friends with loving-kindness :)
- Follow @agora@botsin.space in the Fediverse and start using [[agora protocol]] in public, or within earshot of the bot.
First services in the Commons:
- Sharing.
- Embedding.
- Printing.
- Format conversion.
-
Bridging,
- meaning porting across all useful and pro-social combinations of formats/mediums/networks.
In the Agora your friends are the integration of your friendships over all participating social networks.
I searched for [[markdown to google slides]] and I found https://github.com/googleworkspace/md2googleslides thanks precisely to the Agora.
Love how the Agora is self-documenting ;)
On the importance of debate and voting in the Agora, in the Fediverse.
Node club.
Open letters.
- [[pull]] [[agora bridge js]]
- [[pull]] [[agora bot]]
-
A [[space]].
- Dense with [[Agora-like]] entities.
- #pull [[Agora Likes]] [[Agoras]] [[Known Agoras]]
- The Agora started very fast (it was pleasant) and then proceeded to get very slow (with features, but mostly really with the number of nodes+edges that it's handling, see stats in [[nodes]] if interested).
- It could be fast again -- we just need to fix some issues :)
-
As of right now, very often the Agora takes almost 10s (!) to load some pages, particularly when under load. There's a variety of reasons this happens -- I could write about them here but right now I'd rather just go ahead and try to fix them ;)
- Doing pomodoros today, [[2022-03-20]], to try to address this issue.
-
When starting benchmarking, dev.anagora.org/do is regularly taking 3.7s to load (measured with [[time curl]]). In production this is often longer, but this seems like a good test node (because of the amount of pushes it has, which I think is related to the slowdown).
- The first load after restarting the dev server is often 10s, which is closer to what we'd see in prod (because it needs to load+process the whole Agora graph).
-
Same on [[2022-04-09]].
- Increased organic traffic + crawler bot activity.
- Changed number of workers (it seems more is not necessarily better, trying running with 10.)
- Changed cache expiry to a random range to prevent thundering herd by workers hitting cache TTL in unison.
- Cached calls to node().
- I wonder if there's low hanging fruit remaining; dev.anagora.org just tends to feel so fast in comparison with prod, perhaps I'm missing where's the bottleneck. Will add debugging data.
- HA.
- The Agora workers were restarting very often, way more often than CACHE_TTL, because the bots that are causing most of the increase in load were also hitting URLs that produce 500s -- a nice favour really, as they call attention to an obvious bug we need to fix in [[journals]] (they link out to bad URLs due to an issue with the renderer), but in the meantime they were essentially nuking the performance of the Agora and making all the recent performance work not really take effect.
- Now that this is fixed I can happily report that the Agora feels noticeably snappier :)
- [[pull]] [[agora talks]]
BACKLOG
add [[agora extension]] to chrome store
refactor agora js into [[clojurescript]]
DOING
[[fedwiki to agora markdown converter]] (clojure)
PR
MERGED
multi repo issue with bridge api
- [[christopher alexander]]
[[2021-07-11]]
-
#pull [[agora protocol]] [[tree structure]]
- You tell an [[Agora]] about a [[tree structure]] and communicate an intent and the [[agora]] will try to reflect the tree in a medium.
- You tell it a [[taxonomy]] and it associates the terms in [[agora]] terms (links them in the graph with a pull/push/annotated relationship).
- #pull [[agora tree example]]
- #push [[project snapshot]]
agora twitter bug
- [[s5bug]] dups are still around:
- exception
File "./agora-bot.py", line 137, in get_conversation_id │·······
return resp.json()['data'][0]['conversation_id'] │·······
KeyError: 'data'
Agora Twitter Integration
- [[pull]] [[agora social media integration]]
- [[Twitter]] could integrate with the [[Agora]], or the other way around, in several seemingly productive ways.
- One way would be to automatically pull tweets that use [[wikilink]]s as backlinks in the matching node.
-
Another way would be to automatically tweet blocks with [[action]] [[tweet]] for users which added twitter integration, like so:
- [[tweet]] if you write a block like this, the Agora will tweet it (exactly once, etc.)
- Probably should support scheduling, throttling, etc.
- The [[agora]] will also auto-embed tweets by default. The following is a [[demo]].
-
a [[list]] of threads worth picking up to improve the UI of the [[agora]] reference implementation.
-
[[css]]
-
[[multi column layout]]
- [[karlicoss]] suggested this
-
[[media queries]]
- mobile/desktop css split
- [[karlicoss]] https://beepb00p.xyz/exobrain/exobrain.css
-
[[multi column layout]]
-
[[agora graphs]]
- add more colour
- make it so graphs show up in 'empty' nodes, as they might have backlinks
- support embeds (e.g. obsidian attachments) like the one precisely below :)
-
[[dashtop]]
- do not show square brackets in anagora.org: https://social.coop/web/statuses/106872621147811863
-
[[css]]
[[push]] [[agora rfcs]]
[[Agora user perspective]]
The [[Agora]] currently is slightly more [[consensus]]-prone than [[dissensus]]-prone. This has many benefits, but it also precludes ways to socialize dissensus.
[[User namespace]]s have already been implemented as agora/@user/node
. We should build upon that and create user-centred perspectives of the Agora.
An agora
has content which was built by consensus/convention/aggregation between its users. An agora/@user
namespace builds upon the agora
's content, but hides/marks certain content according to certain @user
's [[agora action]]s.
This was inspired by [[@maya]]'s federated notes.
Block action
The block
action means a specific node/subnode should not be linked in any way to another specific node/subnode
.
Specific subnodes (@user/subnode
) and nodes (node
) can be block
ed. All subnodes from another user can also be block
ed (@user
).
Possible syntaxes
We should have multiple conventions:
Inline:
-
tag action:
#block [[node]]
-
link action:
[[block]] [[node]]
-
list:
- [[block]] - [[@user]] - [[node]] - [[node]] - [[@user/subnode]] - #block - [[node]] - [[node]] - [[node]] - [[@user]]
Front matter
- Markdown front matter:
agora-block: node
- HTML data attribute:
data-agora-block='node'
Hide action
The hide
action means a specific node/subnode/user should not appear on this user perspective
.
Specific subnodes (@user/subnode
) and nodes (node
) can be hide
ed. An user can also be hide
ed (@user
).
The hide
action can be interpreted as a global block
: none of my nodes and subnodes should be linked in any way to an user's nodes and subnodes
.
Possible syntaxes
We should have multiple conventions:
Inline:
-
tag action:
#hide [[node]]
-
link action:
[[hide]] [[node]]
-
list:
- [[hide]] - [[@user]] - [[node]] - [[node]] - [[@user/subnode]] - #hide - [[node]] - [[node]] - [[node]] - [[@user]]
Front matter
-
Markdown front matter:
agora-hide: node
-
HTML data attribute:
data-agora-hide='node'
-
(in the future) [[agora garden yaml file]]:
agora-hide: - node - node - user/subnode - user: - subnode - subnode - user
(WIP) Agree/Disagree action
(WIP) Like/Dislike action
Agora V0.5
-
The v0.5 is:
- Foam/Obsidian based notes forming a personal digital garden.
- Hosted in a public or private repository, by default git.
- Federated/interlinked using a conventional scheme, plus a set of ancillary tools (scripts).
- Integrated with go links/URL redirectors.
- See also: https://twitter.com/flancian/status/1315312902090391553
Plan
-
Craft 'agora' repo (base repo):
-
places/
-
gardens/
- flancian -> flancian.github.com/garden
-
stoas/
- flancian -> flancian.github.com/stoa
-
gardens/
- done but changed my mind on the structure: [[places]] are top level items. [[users]] contribute [[fragments]].
- users/
- CONTRACT.md
-
places/
- Foam
-
Settle open questions
- What does '->' mean as used above?
- git submodule?
- git subtree?
- Trying this first.
- something else?
- Create 'Agora' Twitter account.
- [[an_agora]]
Agora V1
- Superseded by [[Agora v0.5]] for now.
- See also: https://flancia.org/go/agora-v1 [[doc]].
- This is a note I will use to track implementation ideas for the v1 of the [[Agora]].
-
-
Scratch that :) the v0.5 is:
- Foam/Obsidian based notes forming a personal digital garden.
- Hosted in a public or private repository, by default git.
- Federated/interlinked using a conventional scheme, plus a set of ancillary tools (scripts).
- Integrated with go links/URL redirectors.
- From conversation with [[dyokomizo]]: would be interesting to track characteristics/traits of conversations as they evolve. Does non-escalation lead to better discourse? Does escalation really lead more often/quickly to violence?
Agora Version
-
You are currently reading this on an [[agora]] deemed experimental.
- Previously we were using [[semantic versioning]] and got up to 0.5.5 or something, but it felt a bit arbitrary.
- See [[go/agora-server]] for full versioning information.
0.anagora.org
currently servesanagora.org
and mostly runs from HEAD.1.anagora.org
is architecture-decoupled and runs an old (stable?) version, just in case.- Contribute to [[agora plan]], [[agora feature requests]], [[go/agora/bugs]], [[agora protocol]], [[do]] to shape what's likely in store :)
Agora Vscode
- A [[vscode]] extension for the [[Agora]].
- Builds on top of [[foam]], which focuses on tools for building and maintaining [[digital garden]]s.
- The Agora extension focuses on tools for building and maintaining digital forests (or groves; or topiaries?) assembled out of many digital gardens.
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
Agora Yaml
- If you add an
agora.yaml
to your [[digital garden]] repository you can use it to configure how the [[agora]] integrates it. -
a [[project]]
- [[bmann]] suggested adding [[yaml]] support to the [[agora]].
-
[[p0]]
- It will [[unblock]] many things.
- It is a valuable [[design contribution]] from [[bmann]].
- https://github.com/flancian/agora/issues/2
- there's several [[aspects]] to this:
-
[[push]] [[agora feature requests]]
- [[idea]] take [[blog posts]] like https://github.com/bmann/bmcgarden/blob/master/_posts/blog/2011-10-11-turning-the-corner-on-ebook-buying.md and integrate them into the date-stripped node, plus perhaps a link from within the date ([[2011-10-11]] in this example).
-
A [[file]].
- You can put in your garden to configure how Agoras interact with it.
- … theoretically :) I've talked about implementing this for quite long but as of [[2023-01-11]] it hasn't happened.
- I want to prioritize this in [[2023]].
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
Agora Youtube Integration
-
a [[word]].
- the plural of [[agora]] in [[ancient greek]] (nominative, vocative).
-
a [[network]].
- #go https://agor.ai
- https://anagora.org ~ https://flancia.agor.ai et al
-
runs in [[hypatia]] for now
sudo certbot --nginx -d agor.ai,flancia.agor.ai,fotl.agor.ai,shamanic.agor.ai,social.agor.ai,1.agor.ai,ai.agor.ai,an.agor.ai
as of [[2022-11-20]]
My list of people contributing to the [[agora]] development (separate from [[agora]] garden members)
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
-
A [[list]].
- This [[agora]] is literally just [[an agora]]. There are many others, and many more are possible.
- Please [[push]] to this list to add items or write in the [[stoa]] below.
- #pull [[an agora]] [[other agoras]] [[many agoras]]
- public document at doc.anagora.org/agora-|-the-agora
- video call at meet.jit.si/agora-|-the-agora
(none)
(none)
(none)
(none)